gpt4 book ai didi

java - UrlEncodedFormEntity 未按预期工作

转载 作者:行者123 更新时间:2023-12-01 09:44:35 28 4
gpt4 key购买 nike

我正在尝试在 java 中发出 POST 请求,但这没有按预期工作。

已关注 this post ,这是我目前拥有的代码

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(data, Consts.UTF_8);

我无法理解的是,在调试时,data ,是 ArrayList<NameValuePair>调试器显示的值为

[Content-Type=text/json, Authorization=Bearer bZXL7hwy5vo7YnbiiGogKy6WTyCmioi8]

这完全是预料之中的,但我完全不知所措,在这次调用之后,实体的值(value)是,

[Content-Type: application/x-www-form-urlencoded; charset=UTF-8,Content-Length: 78,Chunked: false]

该调用除了忽略我传递给它的数据之外什么也没做。

我在这里做错了什么?

编辑

更多代码

调用者

    String authURL = "https://api.ecobee.com/1/thermostat";
authURL += "?format=json&body=" + getSelection();

// request headers
ArrayList<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();
nvps.add(new BasicNameValuePair("Content-Type", "text/json"));
nvps.add(new BasicNameValuePair("Authorization", "Bearer " + code));

// make the api call
String apiResponse = HttpUtils.makeRequest(RequestMethod.POST, authURL, nvps);

makeRequest方法

public static String makeRequest(RequestMethod method, String url, ArrayList<BasicNameValuePair> data) {

try {

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpRequestBase request = null;

switch (method) {

case POST:

// new post request
request = new HttpPost(url);

// encode the post data
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(data, Consts.UTF_8); // <-- this is where I have the issue
((HttpPost) request).setEntity(entity);
break;

...

最佳答案

正如所讨论的,它不起作用的原因是 header 应该直接在请求中设置,而不是在实体中设置。

所以你可以使用如下所示的内容:

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(data, Consts.UTF_8);

request.setHeader("Content-type", "application/json");
request.setHeader("Authorization","Bearer bZXL7hwy5vo7YnbiiGogKy6WTyCmioi8");

request.setEntity(entity);

关于java - UrlEncodedFormEntity 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172111/

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