第一个SkyScanner文件说
回应详情
成功的回复不包含任何内容。轮询预订详细信息的URL在响应的位置标题中指定。
和
How to retrieve Session key from Skyscanner API post request - Ruby 这个链接说响应成功 - >位置标题返回“sessionKey”
我的问题是响应成功但位置标题返回null ...
我使用 Okhttp lib和
这是我的代码
public String post(String url, String json) throws IOException {
try {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request
.Builder()
.url(url)
.post(body)
.addHeader("Content-Type", "application/x-www-form-urlencode")
.addHeader("Accept", "application/json")
.build();
Response response = client.newCall(request).execute();
Log.v("Response", "code : " + response.code());
Log.v("Response", "message : " + response.message());
Log.v("Response", "location : " + response.header("location"));
return response.body().string();
} catch (Exception e) {
return "";
}
}
我的日志
10-20 20:01:00.698 22202-22408 / com.example.park.myapplication V /响应: 代码:200
10-20 20:01:00.698 22202-22408 / com.example.park.myapplication V /响应:消息:确定
10-20 20:01:00.698 22202-22408 / com.example.park.myapplication V /响应:位置:null
我该怎么办?请找到我的会话密钥...
答案 0 :(得分:0)
更改lib Okhttp - > HttpURLConnection类...
尝试{ url =新网址(u); HttpURLConnection connection =(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(500 * 1000);
connection.setReadTimeout(500 * 1000);
connection.setRequestProperty("Cache-Control", "no-cache");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Accept", "application/xml");
connection.setDoOutput(true);
connection.setDoInput(true);
String Parameters = "apiKey=" + apiKey +
"&country=UK" +
"¤cy=GBP" +
"&locale=en-GB" +
"&originplace=EDI" +
"&destinationplace=LHR" +
"&outbounddate=2016-11-01" +
"&intbounddate=2016-11-08" +
"&locationschema=Iata" +
"&adults=1";
//Parameter 컨텐트 길이 넘겨주는 부분
byte[] postData = Parameters.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
connection.setRequestProperty("Content-Length", Integer.toString(postDataLength));
OutputStream os = connection.getOutputStream();
os.write(postData);
os.flush();
int responseCode = connection.getResponseCode();