2011-07-21 8 views
-2

私の問題は、Javaを使用してHTTP GETリクエストを一部のWebサイトに送信するアプリケーションを実装することです。しかし、ターゲットのウェブサイトは1枚のクッキーが設定する必要がありますクッキーでHTTP GETを実行するJavaエキスパートヘルプが必要

ShippingCountry = US

をこのクッキーは、それが悪い兆候を返す設定されていない場合。以下は私のコードセグメントであり、私はconnect()からnullを取得します。

String urlString = "http://www1.macys.com/catalog/index.ognc?CategoryID=5449&viewall=true"; 
    try{ 
    URL url = new URL(urlString); 
    URLConnection connection = url.openConnection(); 

    connection.addRequestProperty("Cookie", "ShippingCountry=US"); 
    connection.connect(); 

    // Create file 
    FileWriter fstream = new FileWriter("d:/out.txt"); 
    BufferedWriter out = new BufferedWriter(fstream); 
    BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
    StringBuffer sb = new StringBuffer(); 
    String line; 
    while ((line = rd.readLine()) != null) 
    { 
     out.write(line); 
    } 
    rd.close(); 
    //Close the output stream 
    out.close(); 

}

誰かが私を助けることができますか?

答えて

3

addRequestPropertyの代わりにsetRequestPropertyが必要な場合があります。要求にCookie文字列が1つしか存在しない可能性があります。

connection.setRequestProperty("Cookie", "ShippingCountry=US"); 

あなたが複数のクッキーの値を送信する必要がある場合は、コロンとそれらを上タック:

connection.setRequestProperty("Cookie", "ShippingCountry=US;OtherValue=2"); 

更新:

を私のpythonを使用してGETリクエストをやってみました、それは私のように見えます500エラーが発生します。 Webブラウザのように見えないため、サーバーがリクエストをブロックしている可能性があります。たぶん、次のヘッダーを追加すると動作します:

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 

特にAcceptUser-Agentヘッダが必要になる場合があります。

+1

私はいつもsetRequestProerty()を使っていましたが、コードをチェックして、addRequestProperty()も機能するはずです。私は彼に他の問題があると信じています。 – AlexR

+0

ありがとうございますが、キーブロッカーはまだ何もInputStreamReaderから返されません – Keannylen

+0

ありがとうwm_eddie、ヘッダーを追加することによって、それは動作します:) – Keannylen

関連する問題