繁体   English   中英

发送带有JSON标头的网络请求

[英]Sending a network request with a JSON header

因此,我有一个方法可以将请求发送到Web服务器,然后获取响应并将其存储到字符串中。

我的问题是默认情况下它返回XML,但是我希望它返回JSON。 服务器端的工作人员说:“它默认为XML,但您可以发送带有JSON标头的请求,它将返回该请求。”

所以,我的问题是,我需要做什么来请求返回JSON数据而不是XML? (顺便说一句,服务器端的人无法回答这个问题)

谢谢您的帮助

public class NetworkRequest {
private List<NameValuePair> nameValuePairs;
private String URL;

public NetworkRequest(List<NameValuePair> nameValuePairs) {
    this.nameValuePairs = nameValuePairs;
}

public String sendRequest() {
    String result = "";
    InputStream isr = null;
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(URL);

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        isr = entity.getContent();
    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
    }
    // convert response to string
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                isr, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        isr.close();

        result = sb.toString();
    } catch (Exception e) {
        Log.e("log_tag", "Error  converting result " + e.toString());
    }
    return result;
}

public void setURL(String URL) {
    this.URL = URL;
}
}

您需要在HttpPost中添加适当的Accept标头:

httppost.addHeader(new BasicHeader("Accept", "application/json"));

或简单地

httppost.addHeader("Accept", "application/json");

暂无
暂无

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

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