此代码段摘自Postman。从邮递员那里获取的cURL可以正常工作,并且从邮递员生成的Java代码会为特定的调用提供200响应。但是响应主体不在那儿。 用户代理标头应该是什么? 我是否还需要在Java代码中使用此邮递员令牌? 我是否需要添加其他标题? 我的目标是从此GET调用中获取一些数据。
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://blahblah=60041441&attributes=blah,blah,blah")
.get()
.addHeader("User-Agent", "PostmanRuntime/7.13.0")
.addHeader("Accept", "*/*")
.addHeader("Cache-Control", "no-cache")
.addHeader("Postman-Token", "7af03a15-blah,364c160f-92d7-459f-b261-4993801944a7")
.addHeader("Host", "blahblah.na.blah.net:9081")
.addHeader("cookie", "someURL=1800; com.ibm.isim.lastActivity=blahblahToekn; JSESSIONID=blahblahblah:1ajblahi8; LtpaToken2=blahblahbalah")
.addHeader("accept-encoding", "gzip, deflate")
.addHeader("Connection", "keep-alive")
.addHeader("cache-control", "no-cache")
.addHeader("User-Agent", "postman")
.build();
okhttp3.Response response= client.newCall(request).execute();
System.out.println(response.body().toString());
答案 0 :(得分:0)
假设下面的简单get请求就可以了,其他所有细节都可以省略:
Request request = new Request.Builder()
.url("http://blahblah=60041441&attributes=blah,blah,blah")
.get()
.build();
大多数标头(如用户代理,accept-encoding等)将由OkHttp客户端自动添加,因此您可以安全地从请求中删除标头:
.addHeader("User-Agent", "PostmanRuntime/7.13.0")
.addHeader("Host", "blahblah.na.blah.net:9081")
.addHeader("accept-encoding", "gzip, deflate")
.addHeader("Cache-Control", "no-cache")
.addHeader("Connection", "keep-alive")
.addHeader("cache-control", "no-cache")
.addHeader("User-Agent", "postman")
由于 / 是通配符,因此假设您也可以跳过它。
.addHeader("Accept", "*/*")
如果端点要求身份验证,则假设在发送此特定的Get请求之前,您需要先发送身份验证请求。要自动处理身份验证cookie,您可以尝试将CookieJar添加到客户端,以便也可以将其省略(假设标头名称以某种方式更改了,顺便说一句?):
.addHeader("Postman-Token", "7af03a15-blah,364c160f-92d7-459f-b261-4993801944a7")
.addHeader("cookie", "someURL=1800; com.ibm.isim.lastActivity=blahblahToekn; JSESSIONID=blahblahblah:1ajblahi8; LtpaToken2=blahblahbalah")
您还可以检查有关question的答案,以了解添加CookieJar的方法。