當PHP構建一個HTTP POST查詢我可以使用一個名爲簡單的方法:http_build_query將返回基於傳遞給函數在陣列上的以下內容:HTTP POST陣列PARAMS的Java/Android的
簡單數組:
Array
(
[0] => foo
[1] => bar
[2] => baz
[3] => boom
[cow] => milk
[php] => hypertext processor
)
返回:
flags_0=foo&flags_1=bar&flags_2=baz&flags_3=boom&cow=milk&php=hypertext+processor
複雜一點的數組:
Array
(
[user] => Array
(
[name] => Bob Smith
[age] => 47
[sex] => M
[dob] => 5/12/1956
)
[pastimes] => Array
(
[0] => golf
[1] => opera
[2] => poker
[3] => rap
)
[children] => Array
(
[bobby] => Array
(
[age] => 12
[sex] => M
)
[sally] => Array
(
[age] => 8
[sex] => F
)
)
[0] => CEO
)
返回:
user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8&children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO
我在問什麼,有沒有什麼辦法來創建的Java/Android的後者實體格式?我試過,沒有任何運氣如下:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("user", null));
nameValuePairs.add(new BasicNameValuePair("firstname", "admin"));
nameValuePairs.add(new BasicNameValuePair("lastname", "admin"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
希望有人知道如何做到這一點:) 親切的問候, 莫滕
編輯:
基本上我需要的是產品在Java中對應的PHP的:
$params = array('user' => array(
'firstname' => 'Bob Smith',
'lastname' => 'Johnson'
));
這是JSON格式相同的請求:
{"user":{"firstname":"Bob Smith","lastname":"Johnson"}}
我只需要在Java等效於應用程序/ x-WWW-form-urlencoded格式;)
順便說一句。非常感謝您回答sudocode,真正appriciate它!
代碼看起來是正確的。什麼不起作用? – sudocode 2011-05-09 14:37:14
我發佈的實體似乎是:「user =&firstname = admin&lastname = admin」,我的服務對此做出了很好的反應;) 我需要:user%5Bfirstname%5D = admin&user%5Blastname%5D = admin – 2011-05-09 16:10:26
你想要你參數名稱被URL編碼的'['和']'包圍?這不是PHP函數輸出的怪癖,而不是標準的編碼輸出嗎? – sudocode 2011-05-09 16:42:09