【问题标题】:Android, sending XML string to server via HTTPAndroid,通过 HTTP 向服务器发送 XML 字符串
【发布时间】:2011-07-19 13:05:07
【问题描述】:

我最近开始做 Android 编程。我遇到了一个问题。目前我已经构建了一个名为“sendData”的 XML 字符串请求。需要将此 sendData 发送到服务器以验证用户帐户是否有效。

目前,当我尝试发送请求时,我与服务器联系,但我收到默认的通用响应错误,这让我相信 XML 没有被正确发送。

public void postData(String sendData) {
        // Create a new HttpClient and Post Header
        System.out.println("SENDDATA" + sendData);
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www......");

        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(0);
            nameValuePairs.add(new BasicNameValuePair(sendData, sendData));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);

            inputStreamToString(response.getEntity().getContent());

        } 
        catch (ClientProtocolException e) 
        {
            // TODO Auto-generated catch block
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
        }
    } 

以上是我用来发送数据的代码。我相信问题可能发生在“尝试”部分。我在这个论坛上搜索过类似的问题,但找不到我想要的答案。

任何帮助将不胜感激。

谢谢,

编辑:

在日志中的猫。当我打印字符串时,它看起来像这样。

07-19 15:35:36.642: INFO/System.out(2204): <Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0" xsi:noNamespaceSchemaLocation="http://www.example.com">
07-19 15:35:36.642: INFO/System.out(2204): <Identification>
07-19 15:35:36.642: INFO/System.out(2204): <UserID>username@example.com</UserID>
07-19 15:35:36.642: INFO/System.out(2204): <Password>password</Password>
07-19 15:35:36.642: INFO/System.out(2204): </Identification>
07-19 15:35:36.642: INFO/System.out(2204): <Service>
07-19 15:35:36.652: INFO/System.out(2204): <ServiceName>AccountVerify</ServiceName>
07-19 15:35:36.652: INFO/System.out(2204): <ServiceDetail/>
07-19 15:35:36.652: INFO/System.out(2204): </Service>

07-19 15:35:36.652:INFO/System.out(2204):

每个元素在 LogCat 中都有自己的行。会不会是这个问题?

【问题讨论】:

  • 1.) 发布您收到的错误消息。 2.) 在 catch 块中放一些东西 - 错误可能会被捕获,碰到空的 catch 块并且什么也没有显示,然后程序会在错误状态下继续运行。
  • 您是否尝试过使用 TCPMon 来拦截和验证来自您应用的数据?
  • 我没有收到任何错误消息。我会在捕捉块中放一些东西。我从未使用过 TCPMon,但我会研究一下。
  • 我已经检查了渔获物。什么都没有被捕获,所以不会抛出任何错误。
  • 你发现问题了吗?

标签: java android xml http post


【解决方案1】:

我已经得到了答案。问题是进一步查看后,实际请求中没有发送任何信息。解决方案是删除数组并通过设置新实体来替换它。更改/工作代码如下:

        try {
            StringEntity se = new StringEntity(sendData);
            httppost.setEntity(se);
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            System.out.println("Message Sent!");
            inputStreamToString(response.getEntity().getContent());
            } 

【讨论】:

    【解决方案2】:

    我强烈建议您使用Fiddler Web Debugger 来帮助您检测您发送的内容。这是一个很棒的工具,可以为您节省大量时间。

    您发布的代码存在几个错误问题。

    您正在创建的数组列表的大小为 0,设置为 1 会更有效(因为您只添加一个 NameValuePair

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    

    第一个 BasicNameValuePair 构造函数参数错误,应该是某种键名

    nameValuePairs.add(new BasicNameValuePair("mySendData", sendData));
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多