2012-04-28 9 views
2

AndroidアプリでHTTP Webサーバーを実行する必要があります。初回起動はOKです - ブラウザを使用してそのサーバー上のページに移動するときにリクエストを受信して​​URI文字列を処理できます(すべてのパラメータを含む完全なURIでGETリクエストが表示されます)。しかし 、私は、サーバーへのリクエスト送信するフォームを使用している場合:HttpRequest(Android)からPOSTデータを取得する

<FORM action="http://192.168.1.107:8080/testaction" method="post"> 
    <INPUT type="text" name="textfield" /><BR> 
    <INPUT type="submit" value="Send"/> 
</FORM> 

私は唯一のURI(のような「/ testaction」)でアクションを取得します。 POSTリクエストの実際のデータを取得する方法を理解できません。ここで

は、Javaコードでリクエストを処理部分である:

public class HomePageHandler implements HttpRequestHandler { 
... 
     @Override 
     public void handle(HttpRequest request, HttpResponse response, HttpContext httpContext) throws HttpException, IOException { 

       String uriString = request.getRequestLine().getUri(); 
       Uri uri = Uri.parse(uriString); 
... 
} 

私は、Javaおよび/またはHTMLフォーム自体に何かを間違ってやっている可能性が実現します。両方とも助言してください。

答えて

4

のようなオンラインツール、あなたはこれを行うことができます。

if (request instanceof HttpEntityEnclosingRequest) { //test if request is a POST 
    HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity(); 
    String body = EntityUtils.toString(entity); //here you have the POST body 
} 
+0

ありがとう、これは正しい方法です。しかし、重要な部分の1つは、明らかにHTML形式の名前フィールドの省略です。名前がそこにないときは、私はいつも体の中でヌルを受け取ります。私は、データを渡すときに、HTMLスニペット –

+0

を変更しました。nameValuePairs.add(新しいBasicNameValuePair( "json"、jsonData.toString()));サーバー上で受け取ったとき、bodyには "jsonData.toString()"ではなく "json = jsonData.toString()"が含まれています。 –

0

はbrowser..iでそれをクロスチェックするには、Android ...

でPOSTリクエストを実行するための​​を参照してくださいAjaxのポスト要求のためのFirebugの(他の人のために類似のfirefox、上の)コンソールで外を見るためにあなたをお勧めすることができます。またはPOSTのボディを取得するにはhttp://web-sniffer.net/またはhttp://hurl.it

+0

ありがとうございました。しかし私はクライアントではなくAndroidでサーバーを実装しています。そして私はPCブラウザを使ってそれにリクエストを送ります。 –

関連する問題