2016-10-05 9 views
1

Я застрял в немного рассола - при запуске вызова httpsurlconnection я пытаюсь установить серию заголовков, однако при отладке он показывает заголовки, которые я добавил как NULL.httpsurlconnection не устанавливает заголовки на addRequestProperty

Код:

URL obj = new URL(url); 

    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(proxy); 

    //HttpsURLConnection con = (HttpsURLConnection) obj.openConnection(); 

    con.setDoInput(true); 
    con.setDoOutput(true); 

    //add reuqest header 
    con.setRequestMethod("POST"); 
    con.addRequestProperty("Accept-Language", "en-GB"); 
    con.addRequestProperty("X-ApiKey", "xxxx-xxx-xxx-xxx-xxx"); 
    con.addRequestProperty("Content-Type", "application/json"); 


    List<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
    postParameters.add(new BasicNameValuePair("Password", "xxxxxxxxxxxxxx")); 
    postParameters.add(new BasicNameValuePair("Email", "[email protected].xxxx")); 

    OutputStream os = con.getOutputStream(); 
    BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(os)); 
    writer.write(getQuery(postParameters)); 
    writer.flush(); 
    writer.close(); 
    os.close(); 

Чтобы проверить их быть установлены правильно, я добавил

con.getHeaderField("X-ApiKey"); 
con.getHeaderFields(); 

, чтобы определить, является ли мои поля заголовка были правильно установлены. Однако, похоже, они этого не сделали.

Ответы соответственно:

Post Headers: null 

Post Headers: {Content-Length=[11339], Connection=[keep-alive], X-Frame-Options= [SAMEORIGIN], X-Request-Identifier=[xxxxxxxxxxxxxxxxxx], Date=[Wed, 05 Oct 2016 16:56:49 GMT], Content-Type=[text/html], null=[HTTP/1.1 400 Bad Request], Cache-Control=[private]} 

Где я буду неправильно в коде выше, не заходящего заголовки правильно.

ответ

1

Вы должны использовать con.getRequestProperty("X-ApiKey") и con.getRequestProperties()

Метод getHeaderField("") возвращает значение поля заголовка из ответа заголовка. Это очень запутанно, поэтому его следует лучше назвать getResponseHeaderField("name")

Выход не пуст, потому что ваше соединение уже получило ответ от сервера после вызова openConnection(URL).

+0

Спасибо! Я думал, что потеряю свои мраморы. Я согласен, что он должен быть помечен заголовком ответов! – Charabon