2017-05-16 10 views
1

私はInetRead()を使用して、いくつかの店の価格を監視:InetRead()とInetGet()の戻り0バイト

$data = BinaryToString(InetRead($url,1),4) 

実際の戻り0バイトの存在するいくつかのURL。私はInetGet()を試しましたが、データも返されません。ブラウザからアクセスすると、ページが正常に表示されます。 HTTPステータスコード202を返しています。

Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") 

$oHTTP.Open("GET", $RequestURL, False) 
$oHTTP.Send() 

If $oHTTP.status == 200 Then 
    Return $oHTTP.ResponseText 
Else 
    Return "ooops... status: " & $oHTTP.status & @LF 
EndIf 

どうすれば解決できますか?同じURLでこのエラーが発生するとは限りません。

+0

オートチェントコードが機能する場合は、サーバー側で問題が発生する可能性があります。エラーが発生した場合は、コードを再実行してください。 – Xenobiologist

+0

HTTPステータスコード202は、特定のものです。 url _may_ helpを提供しています。 'InetGet()'と 'InetRead()'のエラーコードはいずれも[文書化されていません](https://www.autoitscript.com/forum/topic/84709-inetget-and-error-codes/?do=findComment&comment = 986243)、エラーがまったく返されるかどうかを確認することができます。 – user4157124

答えて

-1

サーバにリクエストを送信するときに、ユーザエージェント文字列またはReferer文字列を調べることによって、ウェブサイトがリダイレクト/ブロックされている可能性があります。 winhttp.winhttprequest.5.1を使用している場合、

HttpSetUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36") 
InetGet("URL","filename",1) 

か:あなたはINETGETを使用している場合

は、エージェントのAutoItが送出されたユーザーを変更すると、以下のように設定することで、ファイルを要求すると、リロードを強制してみてくださいオブジェクト、次に試してください:

$oHTTP.Open("GET", $RequestURL, False) 
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36") 
$oHTTP.SetRequestHeader("Referer", $RequestURL) 
$oHTTP.Send() 

あなたのブラウザを使用してください。これは私がテストに使用する文字列の1つです。

これで解決しない場合は、すべての応答ヘッダーを取得して問題を絞り込んでください。これを.Send()の後に追加してから、コンソールウィンドウを見てください。

$AllResponseHeaders = $oHTTP.GetAllResponseHeaders() 
consolewrite($AllResponseHeaders) 
+0

"あなたのユーザエージェントの文字列やRefererの文字列を見て、ウェブサイトがリダイレクト/ブロックされている可能性があります。後者の場合、 'InetGet()'や 'InetRead()'は何もできません。また、[documentation](https://www.autoitscript.com/autoit3/docs/functions/InetGet.htm)に従って 'InetGet()'の3番目のパラメータは、ダウンロード中にスクリプトが継続するかどうかを定義します( "reloadファイルを要求したときに ")。 – user4157124

関連する問題