POST 数据从 Android 到 Web API returns 404
POST data from Android to Web API returns 404
我正在尝试从我的 Android 客户端将数据作为 POST 请求发送到我的 Web API 后端,但它 returns 是一个 404 响应代码。这是我的代码:
后端:
[HttpPost]
[Route("api/postcomment")]
public IHttpActionResult PostComment(string comment, string email, string actid)
{
string status = CC.PostNewComment(comment, email, actid);
return Ok(status);
}
Android代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://MYWEBADDRESS.azure-mobile.net/api/postcomment");
String mobileServiceAppId = "AZURE_SERVICE_APP_ID";
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("comment", comment));
nameValuePairs.add(new BasicNameValuePair("email", currEmail));
nameValuePairs.add(new BasicNameValuePair("actid", currActID));
httppost.setHeader("Content-Type", "application/json");
httppost.setHeader("ACCEPT", "application/json");
httppost.setHeader("X-ZUMO-APPLICATION", mobileServiceAppId);
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairs);
httppost.setEntity(formEntity);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
}
catch (Exception e) {
}
然而,这个 returns 一个 404 响应代码给我的 Android 客户端。我的代码不正确吗?错误请指出:)
我通过正确设置后端以接受 android 客户端发送的参数来解决此问题。问题出在我的后端,而不是我的客户端。
这是我的后端:
[Route("api/postcomment")]
public IHttpActionResult PostComment([FromBody] CommentViewModel model)
{
string comment = model.Comment;
//Do your processing
return Ok(return_something);
}
public class CommentViewModel
{
public string Comment { get; set; }
public string Email { get; set; }
public string Actid { get; set; }
}
我使用 [FromBody] 强制方法读取请求正文,并使用模型获取客户端传递的值。该方法自动从请求中获取值并将它们设置到模型中,使其变得非常简单。
确保您的 android 客户端使用正确的 POST 代码正确传递您的参数。
我正在尝试从我的 Android 客户端将数据作为 POST 请求发送到我的 Web API 后端,但它 returns 是一个 404 响应代码。这是我的代码:
后端:
[HttpPost]
[Route("api/postcomment")]
public IHttpActionResult PostComment(string comment, string email, string actid)
{
string status = CC.PostNewComment(comment, email, actid);
return Ok(status);
}
Android代码:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://MYWEBADDRESS.azure-mobile.net/api/postcomment");
String mobileServiceAppId = "AZURE_SERVICE_APP_ID";
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("comment", comment));
nameValuePairs.add(new BasicNameValuePair("email", currEmail));
nameValuePairs.add(new BasicNameValuePair("actid", currActID));
httppost.setHeader("Content-Type", "application/json");
httppost.setHeader("ACCEPT", "application/json");
httppost.setHeader("X-ZUMO-APPLICATION", mobileServiceAppId);
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairs);
httppost.setEntity(formEntity);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
}
catch (Exception e) {
}
然而,这个 returns 一个 404 响应代码给我的 Android 客户端。我的代码不正确吗?错误请指出:)
我通过正确设置后端以接受 android 客户端发送的参数来解决此问题。问题出在我的后端,而不是我的客户端。
这是我的后端:
[Route("api/postcomment")]
public IHttpActionResult PostComment([FromBody] CommentViewModel model)
{
string comment = model.Comment;
//Do your processing
return Ok(return_something);
}
public class CommentViewModel
{
public string Comment { get; set; }
public string Email { get; set; }
public string Actid { get; set; }
}
我使用 [FromBody] 强制方法读取请求正文,并使用模型获取客户端传递的值。该方法自动从请求中获取值并将它们设置到模型中,使其变得非常简单。
确保您的 android 客户端使用正确的 POST 代码正确传递您的参数。