我有一個正在運行的 web 服務,我只有一個 api 呼叫,它運行完美。
所以現在我想添加另一個 api 但我無法讓這個作業,當我在瀏覽器中嘗試時它一直回傳這個錯誤
請求包含物體主體但不包含 Content-Type 標頭。此資源不支持推斷的媒體型別“應用程式/八位位元組流”
如果我在我的 testclient c# 專案中嘗試它,它會回傳 Method not allowed
我所做的與已經在作業的 api 完全相同,那么這個令人討厭的錯誤的原因是什么?
來自作業api的代碼
public class SCSController : ApiController
{
// GET: SCS
public HttpResponseMessage AddDriverPayments(DriverPayment driverPayments)
{
HttpResponseMessage result = null;
try
{
DriverPaymentResponse response = new DriverPaymentResponse() { PaymentID = driverPayments.newID, SCS_ID = driverPayments.sCS_ID };
result = Request.CreateResponse(response);
}
catch (Exception ex)
{
var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent("error"),
ReasonPhrase = ex.Message
};
throw new HttpResponseException(resp);
}
return result;
}
來自不作業的api的代碼
public class VLAController : ApiController
{
// GET: VLA
public HttpResponseMessage GetAppLogin(AppLoginRequest appLoginRequest)
{
HttpResponseMessage result = null;
try
{
//VLADataBase db = new VLADataBase();
//AppLoginResponse response = db.GetAppLogin(appLoginRequest);
AppLoginResponse response = new AppLoginResponse() { Authorized = true, TruckID = 123 };
result = Request.CreateResponse(response);
}
catch (Exception ex)
{
var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent("error"),
ReasonPhrase = "fout: " ex.Message
};
throw new HttpResponseException(resp);
}
return result;
}
我如何在我的測驗客戶端中呼叫它
這就是我呼叫作業 api 的方式
string JsonData = JsonConvert.SerializeObject(payments);
System.Net.Http.StringContent restContent = new StringContent(JsonData, Encoding.UTF8, "application/json");
HttpClient client = new HttpClient();
try
{
var response = await client.PostAsync(comboBoxEditWebService.Text, restContent);
if (response.IsSuccessStatusCode)
{
var stream = await response.Content.ReadAsStringAsync();
DriverPaymentResponse Result = JsonConvert.DeserializeObject<DriverPaymentResponse>(stream);
textBoxResult.Text = Result.SCS_ID " " Result.PaymentID;
}
else
{
textBoxResult.Text = response.StatusCode " " response.ReasonPhrase;
}
}
catch (Exception ex)
{
textBoxResult.Text = ex.Message;
}
這就是我如何稱呼不作業的 api
string JsonData = JsonConvert.SerializeObject(appLoginRequest);
System.Net.Http.StringContent restContent = new StringContent(JsonData, Encoding.UTF8, "application/json");
HttpClient client = new HttpClient();
try
{
var response = await client.PostAsync(comboBoxEdit1.Text, restContent);
if (response.IsSuccessStatusCode)
{
var stream = await response.Content.ReadAsStringAsync();
AppLoginResponse Result = JsonConvert.DeserializeObject<AppLoginResponse>(stream);
textBox1.Text = Result.Authorized.ToString() " " Result.TruckID.ToString(); //Result.SCS_ID " " Result.PaymentID;
}
else
{
textBox1.Text = response.StatusCode " " response.ReasonPhrase;
}
}
catch (Exception ex)
{
textBox1.Text = ex.Message;
}
我必須注意,兩個 api 都在不同的單元中,在不同的控制器中,也許這可能是一個問題?

So how can I get this solved so I can use both api's ?
uj5u.com熱心網友回復:
裝飾端點[HttpPost]就成功了(請參閱評論中的對話)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396066.html
標籤:c# api rest web-services
