0

我正在尝试为 REST 服务做一个 post 方法,但我没有从服务器得到任何响应:

public JSONObject postValues (String strUrl, String strJsonArray) throws Exception{
    JSONObject jsonObject = null;
    URL url = new URL(strUrl);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setReadTimeout(10000);
    conn.setConnectTimeout(15000);
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    strJsonArray = "data=" + strJsonArray;

    Log.e("result",""+strJsonArray);

    OutputStream os = conn.getOutputStream();
    os.write(strJsonArray.getBytes());
    os.flush();

    conn.connect();

    if (conn.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));

    String output;
    StringBuilder sb = new StringBuilder();

    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        Log.e("output",output);
        sb.append(output);

    }

    Log.e("output",sb.toString());
    jsonObject = new JSONObject(sb.toString());

    conn.disconnect();

    return jsonObject;

}

当我看到我的 logCat 时:

output {}

我知道服务器工作正常,因为我使用的是谷歌浏览器的“高级 REST 客户端”插件。如果我手动调用 URL(当然使用插件),我会得到想要的答案:

{"message":"OK","code":200}

但是如果我尝试使用我的函数,我的 strJsonArray 被插入,但我从服务器得到一个空响应。

我的代码有什么问题吗?

4

1 回答 1

1

一切看起来都很好...

您可以使用 Wireshark 使用模拟器和 chrome rest 客户端捕获发送到服务器和从服务器接收的数据包。然后你可以比较它们,也许找出问题所在。

您还可以检查错误流 ( conn.getErrorStream()) 中是否存在某些内容。

于 2013-07-25T20:53:22.200 回答