ホームページ >バックエンド開発 >PHPチュートリアル >PHPカールはデータを送信するためのポストリクエストをシミュレートします_PHPチュートリアル
最近、キャンパス図書館の書籍情報の収集プログラムに取り組んでいます。図書館の書籍を収集するため、検索を送信するためのページが必要です。これは、curlの模擬投稿を思い出させます。まず、パケットをキャプチャし、次の投稿を送信した後の形式は次のとおりです。
txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm=%D2%F4%C0%D6&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize
=10&cSortFld= %D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7;
検索キーワード名=txtTm、以降のコードは以下の通り:
txtWxlx=CN&hidWxlx=spanCNLx&txtPY=HZ&txtTm=%D2%F4%C0%D6&txtLx=%25&txtSearchType=1&nMaxCount=100&nSetPageSize
=10&cSortFld=%D5%FD%CC%E2%C3%FB&B1=%BC%EC+%CB%F7;
搜索的关键字name=txtTm,随后代码如下:
<br>
<br>
リーリー
しかし、返されるページには常に関連するコンテンツがないと表示され、キーワードを英語または数字に変更すると正常に表示されるので、これはエンコードの問題であると考え、txtTm=%D2% が表示されることがわかります。投稿の F4%C0 %D6 は、これが URL エンコードであり、英語の場合は変換されないことを知り、次のようにヘッダー情報の一部を追加しました。 リーリー
実際、主な理由は、 $header[] = 'Content-Type:application/x-www-form-urlencoded'; ページを再度ロードした後、中国語の文字で表示される場合、関連するコンテンツがまだないことです。そこで、非常に単純な問題を考えました。php プログラムは utf8 ですが、ライブラリの Web サイトは gb2312 です。$keyword = iconv('UTF-8', 'GB2312', $keyword); という文を追加します。これが問題の鍵となるはずですが、ヘッダー情報を削除して、$keyword = urlencode($keyword) を追加して再度ロードしました。これは次のコードです。 リーリー
予想通り、正常に表示されましたが、ページコンテンツの収集とフォーマットの問題が発生しました。それは規則的なもの以外の何ものでもありません。 (キャンパスネットワークのため、イントラネットからのみアクセス可能です)