gpt4 book ai didi

java - 如何将 HTTP 请求的 header 添加到响应

转载 作者:行者123 更新时间:2023-11-30 10:50:39 24 4
gpt4 key购买 nike

抱歉,如果问题可能会重复。我不熟悉 Java,我被 Cordova 插件所困,该插件以非 JSON 结构返回 header ,我认为是 Map.soString() request.headers() 的呈现

//These parts works fine returning response body

HttpRequest request = HttpRequest.post(this.getUrlString());
this.setupSecurity(request);
request.headers(this.getHeaders());
request.acceptJson();
request.contentType(HttpRequest.CONTENT_TYPE_JSON);
request.send(getJsonObject().toString());
int code = request.code();
String body = request.body(CHARSET);
JSONObject response = new JSONObject();
response.put("status", code);

// in this line I must put JSON converted headers instead of request.headers()
response.put("headers", request.headers());

我试过了

String headers = request.headers().toString();

JSONObject headers = new JSONObject(request.headers());

将上述行更改为

response.put("headers", headers);

但它们都不起作用。
我应该如何发送 header 作为 JSON 作为响应?

更多上下文:
目前响​​应 header 是:

{
null=[HTTP/1.0 200 OK],
Content-Type=[application/json],
Date=[Mon, 25 Jan 2016 07:47:31 GMT],
Server=[WSGIServer/0.1 Python/2.7.6],
Set-Cookie=[csrftoken=tehrIvP7gXzfY3F9CWrjbLXb2uGdwACn; expires=Mon, 23-Jan-2017 07:47:31 GMT; Max-Age=31449600; Path=/, sessionid=iuza9r2wm3zbn07aa2mltbv247ipwfbs; expires=Mon, 08-Feb-2016 07:47:31 GMT; httponly; Max-Age=1209600; Path=/],
Vary=[Accept, Cookie],
X-Android-Received-Millis=[1453708294595],
X-Android-Sent-Millis=[1453708294184], X-Frame-Options=[SAMEORIGIN]
}

并在响应正文中发送。所以我需要解析它们,但我做不到。

最佳答案

应该是这样做的方式:

JSONObject headers = new JSONObject(request.headers());

但是, header 的“toString()”显示似乎显示了带有 null 键的映射条目。这在 JSON 中不起作用:JSON 对象属性名称不能为 null。我的猜测是 null 键导致了崩溃。

所以我认为您需要过滤掉“不良”条目;即像这样编码:

JSONObject headers = new JSONObject()
for (Map.Entry entry: request.headers().entries()) {
if (entry.getKey() != null) {
headers.put(entry.getKey(), entry.getValue());
}
}

关于java - 如何将 HTTP 请求的 header 添加到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992931/

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