Android应用程序将数据发送到PHP脚本 - 期望失败v2.0

时间:2010-12-25 17:33:24

标签: php android http-post

大家好,祝圣诞快乐!

我最近在StackOverflow上提出了一个问题:Android app sends data to PHP script - Expectation failed

我没有得到预期的答案,所以我尝试了新的线索。

首先,我发现有人在此网站上收到同样的错误:http://www.anddev.org/novice-tutorials-f8/doing-http-post-with-the-current-sdk-t5911-15.html

----------------------------引用--------------- ---------------------------------

你好! 我需要一些帮助..我已经测试了这个论坛和其他网站上的每个代码,对它们进行消毒或者使用书面形式,但我总是返回相同的错误:417期望失败..我对状态错误不了解从404,500,等等.. 有经验的人有线索吗? 非常感谢你!如果有人会找到答案,我会用一些开放的代码为这个论坛努力工作!!

您的代码无法运行的原因可能是因为您不了解如何构建HTTP请求。代码很好,你的标题和内容可能不是!

使用网络协议分析器(如Wireshark)或FireBug或Chrome的内置开发工具,阅读您对网站发出的POST请求,然后在Android中重建它们(使用相同的标题)。

---------------------------- UNQuote --------------- ---------------------------------

我尝试使用wireshark,结果就是我不使用

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
     nameValuePairs.add(new BasicNameValuePair("Name", "Noon"));  
     nameValuePairs.add(new BasicNameValuePair("Level", "0"));  
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

发送的消息是httpPost

但是当我使用nameValuePairs时,不会发送HttpPost。

我真的迷失了这个错误。

事先谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题不是POST问题,它是HttpClient服务器问题......您可以使用简单的设置解决它。下面是对正在发生的事情的简要说明,但您可以在android文档中的CoreProtocolPNames.USE_EXPECT_CONTINUE内找到更多信息。

在发送实体内容(即名称 - 值对)之前,HttpClient正在请求服务器以“100-continue”语句(“Expect:100-continue”握手)进行响应。如果服务器无法执行此操作,则其响应将返回为417,并且不会发送实体。您可以通过在初始化HttpClient时使用以下行来停止握手:

mHttpClient = new DefaultHttpClient(); params = HttpClient.getParams(); params.setParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,false);

该设置应该阻止您的代码请求握手,并且应该立即发送实体。