Google HTTP Client Client for Java(1.22.0)に問題があります。 これは私のコードJavaのGoogle HTTPクライアントライブラリがHttpResponseExceptionをスローする:301 Moved Permanently
String url = "http://gazetapraca.pl/ogl/2502758";
GenericUrl genericUrl = new GenericUrl(url);
ApacheHttpTransport apacheHttpTransport = new ApacheHttpTransport();
HttpRequest httpRequest = apacheHttpTransport.createRequestFactory().buildGetRequest(genericUrl);
httpRequest.setFollowRedirects(true);
HttpResponse httpResponse = httpRequest.execute();
とhttpRequest.execute(ある)は、以下
com.google.api.client.http.HttpResponseException: 301 Moved Permanently
をスローWiresharkの
GET /ogl/2502758 HTTP/1.1
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.22.0 (gzip)
Host: gazetapraca.pl
Connection: Keep-Alive
HTTP/1.1 301 Moved Permanently
Date: Sat, 26 Nov 2016 22:15:52 GMT
Server: Apache
Location: /ogl/2502758/pakowacz+-+mile+widziane+panie
Content-Length: 0
Set-Cookie: JSESSIONID_JOBS=2f1TffY6JYcb6zvBSrQ72fds7rfdsSnHM3sefw6D31Lfr434bnkDmdLQJLvLFZ6zkYBF!-12116034235597; path=/; HttpOnly
Content-Language: pl
P3P: CP="NOI DSP COR NID PSAo OUR IND"
Vary: User-Agent
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
GET /ogl/2502758/pakowacz%20-%20mile%20widziane%20panie HTTP/1.1
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.22.0 (gzip)
Host: gazetapraca.pl
Connection: Keep-Alive
Cookie: JSESSIONID_JOBS=2f1TffY6JYcb6zvBSrQ72fds7rfdsSnHM3sefw6D31Lfr434bnkDmdLQJLvLFZ6zkYBF!-12116034235597
HTTP/1.1 301 Moved Permanently
Date: Sat, 26 Nov 2016 22:15:52 GMT
Server: Apache
Location: /ogl/2502758/pakowacz+-+mile+widziane+panie
Content-Length: 0
Content-Language: pl
P3P: CP="NOI DSP COR NID PSAo OUR IND"
Vary: User-Agent
Keep-Alive: timeout=2, max=99
Connection: Keep-Alive
から続き、数回繰り返しています。 location
が/ogl/2502758/pakowacz+-+mile+widziane+panie
であり、次のリクエストメソッドが/ogl/2502758/pakowacz%20-%20mile%20widziane%20panie
であるため、問題がURLである可能性があります。 他のソフトウェアとライブラリではすべて動作しています(Google Chromeのブラウザ、Postman - Chromeのアドオン、JSOUP - javaライブラリ)。
誰も問題を解決する方法を知っていますか?
すばらしい技術情報をありがとうございました。この場合は何かできますか?私はライブラリ(Google HTTPクライアント)はうまく動作するが、リモートサーバーは使用していないことを理解しています。私は30xを受け取ったら別のライブラリを使う考えがあります。あなたはそれについてどう思いますか? –
このライブラリのソースコードを掘り下げた後、 'HttpRequest'クラスのインスタンスメソッド' setFollowRedirects(boolean) '(これはあなたのコードにあります)によってインスタンス変数' followRedirects'が設定できるようです)。だから、それをfalseに設定し、応答の 'Location'ヘッダを取得することでリダイレクトに従います。 –
私はこれを前に設定しました(私のメインポストを参照してください) –