无法从http响应中找到正文数据

时间:2011-02-12 15:48:26

标签: android http networking

我正在执行名称/值对的HTTP POST,然后尝试获取HTTP响应主体(并将其放入名为描述的String中)。

我无法找到访问响应消息正文的方法。我所拥有的是迄今为止我提出的最好的但是它不起作用。 “description”变量最终为空。

最终目标是在服务器端拥有代码,该代码接收post数据并返回包含有用信息的消息体。现在我只有一个存根html,总是返回相同的东西(见下面的HTML)。换句话说,应用程序将向服务器发送DTC(诊断故障代码,从汽车),服务器将查找它并在HTML正文内发回描述文本。

方法的源代码:

public String getDTCDescription (String DTC) {
    String description = "";

    String url = "http://site/test.html";
    List<NameValuePair> args = new ArrayList<NameValuePair>();

    args.add(new BasicNameValuePair("testkey","testValue")); 

    HttpResponse h;

    h = postData(url, args);

    BufferedInputStream content = null; 
    try {
        content = new BufferedInputStream(h.getEntity().getContent());
    } catch (Exception e) {
        Log.e("NetDTCInfo",e.getMessage());
    }

    if (content == null) {
        return "";
    }

    // try and loop through all the data waiting on the input stream. 
    try {
        while (content.available() > 0) {
            Log.d("NetDTCInfo","Reading a byte...");
            description = description + (char) content.read();
            Log.d("NetDTCInfo","Description is now: " + description);
        }
    } catch (IOException e) {
        Log.e("NetDTCInfo","Error while reading. " + e.getMessage());
    }


    return description;
}

文件test.html的源代码

<html>
        <body>
                <pre>
                        P0521|This is a description of DTC code P0521.
                </pre>
        </body>
</html>

1 个答案:

答案 0 :(得分:1)

看起来你的这种做法很复杂,比在respose中发送一个HTML页面更简单,只需发送一个你最想在客户端得到的字符串。如果您在响应消息中有更复杂的数据,那么我会建议您在客户端使用XML响应和SAX解析。