2016-11-17 7 views
0

私はPixiv用のAPIを構築しています。これまでのところログインプロセスを完了してタグで検索することができました。Fiddlerが実行されていないときにサーバーから421のHTTPエラーが返される

今、私はをダウンロードしたい選択したWebページ上の画像。最初はいくつかの証明書のエラーが発生しました。私は一時的に証明書の検証を無視して修正しました。

はその後、非常に興味深いことが起こった...フィドラーがバックグラウンドで実行されていた場合 - 応答が正常に受信し、私は、画像をダウンロードすることができました。何も問題はありません。

ただし、Fiddlerが実行されていないときは、リモートサーバーは421エラーコードを返しました。

物事は私はすでに試した:

  • が手動ですべての応答を閉鎖し、キープアライブヘッダを強制「を使用して」文
  • を使用します。
  • は、明示的にHTTPの使用を宣言/ 1.1
  • マイ画像要求コードは次のようになりますHttpWebRequestのオブジェクト

上のプロキシ設定を変更する:

HttpWebRequest imagerequest = (HttpWebRequest)WebRequest.Create(imgLink); 
imagerequest.Host = $"i.pximg.net"; 
imagerequest.UserAgent = USER_AGENT; 
imagerequest.Accept = "image/webp,image/*,*/*;q=0.8"; 
imagerequest.Referer = post.PostLink; 
imagerequest.Headers.Add("Accept-Encoding", "gzip, deflate, sdch, br"); 
imagerequest.Headers.Add("Accept-Language", "en-US,en;q=0.8,sl;q=0.6"); 

byte[] imagecontent; 
using (var imageresponse = (HttpWebResponse)imagerequest.GetResponse()) 
{ 
    using (var imagestream = imageresponse.GetResponseStream()) 
    { 
     imagecontent = imagestream.ReadStream(); 
    } 
} 

(私も送ります画像リンクを得るために、この1の前に要求)「imgLink」の

例:012

GET https://i.pximg.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36 
Accept: image/webp,image/*,*/*;q=0.8 
Referer: http://www.pixiv.net/whitecube/user/2824699/illust/41485846 
Accept-Encoding: gzip, deflate, sdch, br 
Accept-Language: en-US,en;q=0.8,sl;q=0.6 
Host: i.pximg.net 

フィドラーは、HTTPプロトコル違反の兆候を示さない。

https://i3.pixiv.net/img-original/img/2014/02/09/00/10/03/41485846_p0.jpg

フィドラーこのとして送信された要求を表示します。

+1

Fiddlerは、アプリのトラフィックを実行しているときに「HTTPプロトコル違反」の警告を表示しますか? 'imgLink'変数の値の例は何ですか?同じ' i.pximg.net'ホスト名を指定していますか? – EricLaw

+0

質問を編集しました。 "imgLink"とFiddlerの例を追加しました。フィドラーのリクエストを見ると、 "imgLink"の "3"が消えているようです。生データ – CryShana

+0

'.Host'の値を正しい値(' i3.pixiv.net')に修正すると、これは役に立ちますか? – EricLaw

答えて

0

私はまったく目が見えなかったようです。 「imgLinkは」間違ったホスト名は、全体の時間を設定していたが、ホスト名はとても似ていたので、私はそれに気づきませんでした。私はフィドラーは自動的に私のために...

次の時間が、私は、ホスト名をチェック三倍にしてくださいすることが固定されたと思います。すべての助けをありがとう。

+1

Fiddler *は、修正するたびに「HTTPプロトコル違反」を表示する必要があります。違反を表示するようにFiddlerを設定していない場合は、Tools> Fiddler Options> General> Protocol Violationsの中で、少なくとも「重大なエラーを警告する」を有効にする必要があります。 – EricLaw

+0

私はすでにそれを設定していましたが、警告はありませんでした。代わりに、「すべてのエラーを警告する」に設定する必要がありますか? – CryShana

関連する問題