1

私はいくつかのことを試しましたが、私のAndroidアプリは投稿パラメーターを送信していません。仮想デバイスでアプリを実行します。これはコードです:

@Override
public void run() {
    try{
        HttpClient client = new DefaultHttpClient();  
        HttpPost post = new HttpPost(page);   

        HttpParams httpParams = client.getParams();
        httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);

        post.setHeader("Content-type", "application/json");
        post.setHeader("Accept", "application/json");
        JSONObject obj = new JSONObject();
        obj.put("username", "abcd");
        obj.put("password", "1234");
        post.setEntity(new StringEntity(obj.toString(), "UTF-8"));
        HttpResponse response = client.execute(post);
        InputStreamReader isr = new InputStreamReader(response.getEntity().getContent());
        BufferedReader reader = new BufferedReader(isr);
        String line = "";
        while((line = reader.readLine()) != null){
            System.out.println(line);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

PHPページにPOSTリクエストを送信する必要があります。このページには、POST配列の出力が表示されます。

<?php
print_r($_POST);
?>

アプリを実行すると、空の配列が表示されます。

4

3 に答える 3

1

JSONを送信しているからです

標準のphp$_POSTはキーと値のペアから構築されるため、key1 = value1&key2=value2を投稿する必要があります

またはあなたはから読む必要があります

$HTTP_RAW_POST_DATA

また

<?php $postdata = file_get_contents("php://input"); ?> 

と使用

json_decode( $postdata );

PHPは自動的にjsonをデコードしません

別のアプローチを使用して、data=YourJsonCodeのようにjsonをPOSTすることもできます

次に、json_decode($ _POST ['data']);を使用してデコードします。

于 2012-10-05T10:55:08.203 に答える
0

問題が解決しました。www 以外のすべてのページをリダイレクトする htaccess ファイルがありました。

于 2012-12-22T13:33:32.663 に答える
0

URL でエンコードされた名前と値のペアを送信してみてください。を使用して、応答をfor youEntityUtilsに変換することもできます。String

HttpClient client = new DefaultHttpClient();  
HttpPost post = new HttpPost(page);

HttpParams httpParams = client.getParams();
httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 20000);

post.setHeader("Content-Type","application/x-www-form-urlencoded");

List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("username", "abcd"));
formParams.add(new BasicNameValuePair("password", "1234"));

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams,HTTP.UTF_8);
post.setEntity(entity);
HttpResponse httpResponse = client.execute(post);
System.out.println(EntityUtils.toString(httpResponse.getEntity()));
于 2012-10-05T12:15:37.160 に答える