2012-04-29 34 views
1

POST経由で検索クエリを送信する検索サービス(PHP)があります。私は自分のアプリでその検索エンジンを使用したいと思います。 PHPサービスには公開APIがありません。POSTリクエストからパラメータの名前を取得する方法は?

検索クエリを入力し、POSTリクエストを取得してパラメータの名前を確認する方法はありますか?私はその後、私のアプリからPOST要求を送信し、POST応答をキャッチするために使用します。

これは公式の検索エンジンであり、政府の担当者が、私にパラメータの名前を教えて欲しいという私の要求に答えない。それは何も違法ではない、アプリは無料です、それは私が彼らに返信するように私がもう待つことができないことです。

PS。私はUbuntuシェルとその管理ツールにアクセスできます。

EDIT

これは、検索フォームが(ブラウザ経由で見られる)、Webページのソースでどのように見えるかです

<form action="search.php" method="POST"> 
    <input type="text" name="search" size=20><br> 
    SZ<input type="checkbox" checked name="sz"> 
    NZ<input type="checkbox" checked name="nz"> 
    <input type="submit" name="search_term" value="search" > 
</form> 

EDIT 2

ポストを編集しないでください男が私にLinuxのコマンド・カールでこれを行う適切な方法を提案したので。

+0

あなたはma PHPの別のウェブサイトでのPOSTリクエスト? – Anonymous

+0

@BaileyMcAfeeいいえ、PHPとは関係ありません。実際にはJavaアプリケーションですが、POSTパラメータの名前を知る必要があります。 POSTリクエストを行うためにPHPを使用することとは何も関係ありません。 – sandalone

+0

カールリクエスト(PHPまたはLinuxシェルから)を検索エンジンに送信できますか?次に、repsonseを解析しますか? – n00dle

答えて

1

POSTパラメータを取得するために検索フォームでソースを表示しようとしましたか?すなわち、入力ボックスの名前

編集例えば テイクtizagサイト上のPHPのフォーム

<html><body> 
<h4>Tizag Art Supply Order Form</h4> 
<form action="process.php" method="post"> 
<select name="item"> 
<option>Paint</option> 
<option>Brushes</option> 
<option>Erasers</option> 
</select> 
Quantity: <input name="quantity" type="text" /> 
<input type="submit" /> 
</form> 
</body></html> 

のパラメータである入力名には、(品質とアイテム

Javaコード、すなわちこれをAppengineに使用していました)

HttpURLConnection connection = null; 
String line = null; 
BufferedReader rd = null; 
String urlParameters = "search=search&submit=Submit"; 
serverAddress = new URL("http://www.search.com/search.php"); 
// set up out communications stuff 
connection = null; 
connection = (HttpURLConnection) serverAddress.openConnection(); 
// connection.setRequestMethod("GET"); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Referer", ""); 
connection.setRequestProperty("User-Agent", ""); 
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); 
connection.setRequestProperty("Content-Language", "en-US"); 
connection.setUseCaches(false); 
connection.setDoInput(true); 
connection.setDoOutput(true); 
DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
wr.writeBytes(urlParameters); 
wr.flush(); 
wr.close(); 
connection.connect(); 
if (connection.getResponseCode() == 404) { 
    throw new ErrorException(); 
} 
ArrayList<String> ud = new ArrayList<String>(); 
rd = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
while ((line = rd.readLine()) != null) { 
    ud.add(line); // add response to arraylist 
} 
+0

どうすればそれが役に立ちますか? – sandalone

+1

入力ボックスの名前を使用すると、応答ページに投稿することができます。これは、javaを使用して応答を取得します。つまり、アプリケーションから検索エンジンに直接ポストを作り、その結果を相互に貫通させて – anselm

+0

ええと...質問を編集し、検索フォームがコード – sandalone

0

これは確かにcurl in PHPで行うことができますが、政府のサイトを削ってデータを収集して再利用する可能性を考慮する必要があります。

もちろん、データの使い方、データの重要性、リクエストの頻度、プロキシを使用するかどうかはわかりません。だから心配することはないかもしれない。

サードパーティの検索エンジンから返されたパラメータを知りたいとします。だからあなたは問題のSEにPOSTするためにカールを使います。その後、返されたページを解析し、後に情報を抽出します。

編集:あなたはJavaの男です。シェルをもっと快適に使うには、PHPの "exec"コマンドのいくつかの例を読んでください。また、同様の「system」と「passthru」があります。

+0

公の文書、法律の改正などを取得するだけです。違法ではないと私は言った。そして、私はこのアプリはコミュニティの使用のためのものであることを恐れていない。とにかく気をつけてくれてありがとう – sandalone

+0

はい、私はjavaコーダーです:)そして私が知っているのは、Linuxシェルのカールコマンドを使用することです。 – sandalone

関連する問題