首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpURLConnection.getInputStream在HTTP中的奇怪行为

HttpURLConnection.getInputStream在HTTP中的奇怪行为
EN

Stack Overflow用户
提问于 2017-05-15 16:16:16
回答 1查看 252关注 0票数 0

以下代码在Spring中将HTTP发送到REST:

代码语言:javascript
复制
    ...
    HttpURLConnection connection = null;
    InputStream input = null;
    BufferedWriter output = null;
    BufferedReader reader = null;
    String result = null;
    try {
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/json");
        //Send data
        output = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
        output.write(data);
        output.flush();
        //Read response
        int responseCode = connection.getResponseCode();
        if (responseCode >= 400) {
            input = connection.getErrorStream();
        } else {
            input = connection.getInputStream();
        }
        reader = new BufferedReader(new InputStreamReader(input));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append('\n');
        }
        result = "Status " + responseCode + ".\n" + sb.toString();
        ...

其中url包含REST端点和数据,其中JSON被转换为具有POST中所需的用户属性的字符串。

问题是,尽管POST按预期工作,但在获得HTTP状态201之后,我无法获得API返回的响应体(但它在出现错误时工作,例如HTTP状态409)。奇怪的是,readline()函数在第一次读取时总是返回null。API可以很好地从Postman调用它,甚至可以从Eclipse中的一个Java项目运行该代码。

我的compileSdkversiontargetSdkVersion设置为25。

我将我的代码与网络上的许多HttpURLConnection示例进行了比较,在这里和那里应用更改,但没有成功.

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-16 15:31:28

在比较了从PostmanAndroid应用程序发送的header之后,我注意到通过将报头Accept: */*添加到POST请求中(正如Postman所做的那样),它按预期的方式工作。根据HTTP规范:一个没有任何Accept字段的请求意味着用户代理将接受任何媒体类型的响应。因此,它应该在没有accept报头的情况下工作(就像GET到相同的API那样)。

对我来说,无论是Spring API方面的错误、错误配置还是“正常”行为,都与Android模块无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43984333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档