Где находится SkyScanner SessionKey?
Первый документ SkyScanner сказать
Подробности ответа
Успешный ответ не содержит контента. URL-адрес для запроса информации о бронировании указывается в заголовке местоположения ответа.
а также
Как получить ключ сеанса из пост-запроса API Skyscanner - Ruby эта ссылка говорит об успешном ответе -> Заголовок местоположения возвращает "sessionKey"
Моя проблема - ответ успешен, но заголовок местоположения возвращает ноль...
Я использую 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/ Response: location: null
Что я должен делать? пожалуйста, найдите мой ключ сессии...
1 ответ
Изменить lib Okhttp -> HttpurlConnection...
try {url = новый 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();