POSTの生の本体全体を文字列化された配列(その他は何も)にしたくない場合は、UrlEncodedFormEntityの代わりにStringEntityを使用する必要があると思います。
したがって、この:
String s = "asdf"; // replace this with your JSON string
StringEntity stringEntity = new StringEntity(s);
httpPost.setEntity(stringEntity);
私はPHPに精通していませんが、概念的には受信側でjson.parse(request.full_body)のようなことをします。これ(request.full_bodyまたは同等のもの)は、request['input_field1']のようなPOSTフォームの単一の値をフェッチする一般的なパターンとは大きく異なることに注意してください。
しかし、あなたの質問を読んで、私はこのfull_bodyアプローチがあなたが望むものであるかどうか完全に確信していません。ここに示すように、フォーム変数「配列」を介してデータにアクセスしたいように見えます。
$ _POST ['array'] = array( "key" => "value"、 "key2" => "value2");
ここではPOST本体全体を操作しているのではなく、「配列」と呼ばれる単一のフォーム変数の値をフェッチしていることに注意してください(PHPについてはよくわかりません)。この場合は、次のようにNameValuePairsを使用する必要があります。
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("array", yourJSONArrayAsString));
これにより、配列がフォーム変数'array'に関連付けられた値として投稿されます。