gpt4 book ai didi

java - 如何从 HttpURLConnection POST 获取响应

转载 作者:行者123 更新时间:2023-11-30 01:48:11 26 4
gpt4 key购买 nike

我正在尝试将 POST(正文中包含 XML)发送到 API 并获取 XML 响应。我需要从响应正文(从 ERROR 元素内)获取确认或错误详细信息。

我可以发送 POST,它确实会触发 API 中的更改,但我无法读取响应。

当我从 Postman 手动发送 POST 时,我会触发 API 中的更改,并且可以看到 API 的响应为 text/html;charset=charset=utf-8

这是我当前的代码:

      URL url = new URL(urlString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

writer.write(xmlString);
writer.flush();
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
writer.close();
reader.close();

响应正文应采用以下格式:

<Root>
<Session>
<UserId>theUserID</UserId>
<Password>thePassword</Password>
<ERROR Status="0" Description="Logon Successful" />
</Session>
<ActivityList>
<Activity Type="ReqUp" Incident="12345" ElapsedTime="350"
Description="example response"
Status="Complete">
<ERROR Status="0" Description="OK" />
</Activity>
</ActivityList>
</Root>

当前/实际结果:
line 显示为 null

最佳答案

由于您希望 xml 从服务器返回,因此您可能需要在请求中添加“accept” header ,以告诉服务器您(客户端)将“接受”xml。从您的帖子来看,默认值是 html。

这可能对你有用:

  URL url = new URL(urlString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("accept", "application/xml");
conn.setDoOutput(true);

OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

如果您要将 xml 发送到服务器,您可能还需要添加“内容类型” header ,如下所示:

  conn.setRequestProperty("content-type", "application/xml");

引用:https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

关于java - 如何从 HttpURLConnection POST 获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com