3

私が提供するとオブジェクトを使用して、と を呼び出すようAsyncTaskに設定しました。私は次のように設定しました:AndroidHttpClientExecuteHttpPostBasicHttpContextHttpPost

HttpPost myPost = new HttpPost("http://192.168.1.66:8080/login.html");
BasicHttpParams httpParams = new BasicHttpParams();
httpParams.setParameter("cmd", "Login");
httpParams.setParameter("Username", "test");
httpParams.setParameter("Password", "password");
myPost.setParams(httpParams);

コマンドを実行すると、ログイン結果ではなく、ログインページが取得されます。サーバー側でプロセスを監視したところ、これは、HTTP リクエストがパラメーターなしで到着したためであると思われます。それで、私は何が欠けていますか?

4

4 に答える 4

1
List<NameValuePair> nameValuePairs=...;
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

これを試して。

HttpPost ドキュメント

HTTP POST メソッドは、RFC2616 のセクション 9.5 で定義されています。

POST メソッドは、オリジン サーバーがリクエストに 含まれるエンティティを、Request-Line の Request-URI で識別されるリソースの新しい従属として受け入れるように要求するために使用されます...

このクラスに setParams() がある理由は、それを持つHttpMessageを実装しているためです。使用される場合と使用されない場合がありますか?(よくわかりませんが、他の実装のために存在する可能性がありますか? setEntity(new UrlEncodedFormEntity(nameValuePairs));)

于 2013-06-17T16:51:15.607 に答える
1
            HttpPost post = new HttpPost("http://192.168.1.66:8080/login.html");
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    3);
            nameValuePairs.add(new BasicNameValuePair("cmd", "Login"
                    .getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("Username", "test"
                    .getText().toString()));

            nameValuePairs.add(new BasicNameValuePair("Password", "Password"
                    .getText().toString()));

            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
于 2013-06-17T16:51:54.957 に答える
0

httpParams以下を使用して、実際にオブジェクトをリクエストに設定する必要がありsetEntityます。

myPost.setEntity(new UrlEncodedFormEntity(httpParams, HTTP.UTF_8));

于 2013-06-17T16:50:45.053 に答える