繁体   English   中英

Android中对HTTP POST请求的意外响应

[英]Unexpected response to HTTP POST request in Android

我最近在Android上通过http POST请求发送/接收数据时遇到了一个奇怪的问题。

我在设置Fiddler来监视我的Android应用程序与服务器之间的通信时遇到了困难,因此我创建了一个简单的Web表单来模拟POST请求。

<form action="http://www.my.server.org/my_script.php" method="POST">
  <input name="deviceID" type="text" width=30> Device ID <br>
  <input name="lang" type="text" width=30> Language (en / cs) <br>
  <input name="lastUpdated" type="text" width=30> Last Updated (yyyy-MM-dd hh:mm) <br>
  <button type="submit">Send</button>
</form>

当我使用此表单发送请求时,响应将返回200 OK状态代码和所需的XML文件。

我认为这将等同于我在Android应用程序中拥有的Java代码。

private static final String POST_PARAM_LAST_UPDATED = "lastUpdated";
private static final String POST_PARAM_DEVICE_ID = "deviceId";
private static final String POST_PARAM_LANG = "lang";

...

// Create a POST Header and add POST Parameters
HttpPost httpPost = new HttpPost(URL_ARTICLES);
List<NameValuePair> postParameters = new ArrayList<NameValuePair>(3);
postParameters.add(new BasicNameValuePair(POST_PARAM_DEVICE_ID, deviceId));
postParameters.add(new BasicNameValuePair(POST_PARAM_LANG, lang));
postParameters.add(new BasicNameValuePair(POST_PARAM_LAST_UPDATED, lastUpdated));
httpPost.setEntity(new UrlEncodedFormEntity(postParameters));

// Create new HttpClient and execute HTTP Post Request
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpPost);

// Get and parse the response
List<Article> parsedArticles = new ArrayList<Article>();
HttpEntity entity = response.getEntity();
if (entity != null) {
  parsedArticles = Parser.parseArticles(entity.getContent());
}

但是,即使我输入了相同的参数值(与在Web表单中输入的参数值一样),在这种情况下的响应仍然是204 NO CONTENT并且显然没有XML文件。

有人可以告诉我这两种方法为什么不等效并且响应不同吗? 是编码方面的东西还是我想念的东西?

不幸的是,我无法访问服务器,而且我无法调试Android的传出和传入数据,因为Fiddler和我与PC相连的仿真器/设备拒绝合作。

我也想知道是否应该使用AndroidHttpClient而不是DefaultHttpClient但是我认为在这种情况下它不会更改任何内容。

提前致谢!

由于Maxims的评论,我发现了问题所在。

这是POST_PARAM_DEVICE_ID常量中的一个愚蠢的小写字母。 它的值为“ deviceId”(并且应为Web表单中的“ deviceID”)。

好吧,我的开发人员,定义字符串键时要注意-区分大小写!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM