2016-03-04 75 views
2

我想發佈一個數組到PHP,但是當我使用下面的代碼時,沒有任何東西被傳輸,並且$_POST數組出現爲{}。我如何發佈一個數組到PHP?爲一個參數發佈多個值?

MultipartRequest request = new MultipartRequest(); 
request.setUrl(url); 
request.setPost(true); 
String[] value = {"a","b","c"}; 
request.addArgument(argument, value); 

謝謝!

回答

2

@tizbn提供的答案在某種程度上可能有效b UT並不總是與PHP的工作,所以我用StringBuilder象下面,但這種方法需要你知道你的數組的大小事先:

... 
List list = new ArrayList(); 
list.add("a"); 
list.add("b"); 
list.add("c"); 

String[] value = new String[list.size()]; 
for (int i = 0; i < list.size(); i++) { 
    StringBuilder builder = new StringBuilder(); 
    value[i] = (builder.append("\"").append(list.get(i)).append("\"")).toString(); 
} 
Arrays.toString(value); 

ConnectionRequest request = new ConnectionRequest(); 
request.setUrl(url); 
request.setPost(true); 
request.addArgument("arg", value); 
... 

PHP的一面,你如下讀值:

... 
$arg = isset($_POST['arg']) ? $_POST['arg'] : ''; 
$argArray = json_decode($arg); 
foreach ($argArray as $value) { 
    ... 
    // do whatever you want with $value 
} 
... 
+1

僅供參考這使我注意到MultipartRequest中的一個錯誤,其中'addArgument(String [])'方法被忽略。這在來源中得到解決。 –

+0

@shaiAlmog使用修復,我需要更新的東西或將自動生效? – SmedleyDSlap

+0

新的服務器版本應該已經包含它,但爲了讓它在模擬器上工作,您將不得不等待下一個插件更新或使用源代碼:https://www.codenameone.com/blog/how-to-use -the-代號 - 一sources.html –

2

使用ConnectionRequest如果你沒有安裝文件,而不是MultipartRequest

ConnectionRequest request = new ConnectionRequest(); 
request.setUrl(url); 
request.setPost(true); 

使用JSON庫來增加你的數組:

JSONArray array = new JSONArray(); 
array.put("hi"); 
array.put("hello"); 
String value = array.toString(); 

然後將其添加作爲參數傳遞給您的要求:

request.addArgument("argument", value); 
+0

非常感謝,它不適用於MultipartRequest? – SmedleyDSlap

+0

其張貼大文件/秒 https://codenameone.googlecode.com/svn/trunk/CodenameOne/javadoc/com/codename1/io/MultipartRequest.html – tizbn

+0

我建議遷移到新的JavaDoc位置:https://開頭www.codenameone.com/javadoc/com/codename1/io/MultipartRequest.html比較這兩個顯示究竟爲什麼...... –