2013-03-19 168 views
-1

我知道如何通過http get方法調用將變量值從java傳遞給java。但是我不知道如何通過獲取調用將數組從java傳遞到php。任何幫助將被讚賞。從java傳遞數組到php

HttpGet httpGet = new HttpGet("http://localhost/browserHistory.php?mobile_number="+mob+"&arr="+myArray); 
    HttpClient client = new DefaultHttpClient(); 
    client.execute(httpGet); 

我試圖在PHP中這樣寫:

$history = $_GET["arr"]; 
    $result = count($history); 
    echo ""+$result; 

結果總是打印1.

+2

你必須使用可以通過Java的可讀寫由PHP的格式。 它存在標準像'JSON'或'XML' – 2013-03-19 07:38:39

+2

分享你的研究可以幫助每個人。告訴我們你試過了什麼,以及它爲什麼不符合你的需求。這表明你已經花時間去嘗試幫助自己,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案! – 2013-03-19 07:39:03

+0

無論誰做DV.plz告訴我爲什麼? – 2013-03-19 07:47:01

回答

0

可以包括身體成GET請求(它沒有明確地由HTTP規範禁止)但這不是一個好的方法 - GET並不意味着被用來發送數據到服務器。

因此,請考慮使用POST來代替,或者如果數組很小,則將其序列化並在查詢字符串中發佈。

要在Android中發送POST

String data[] = { "String1", "String2" }; 
JSONArray arr = new JSONArray(Arrays.asList(data)); 

DefaultHttpClient httpclient = new DefaultHttpClient(); 

// Put correct URL of your web service. 
HttpPost post = new HttpPost("http://example.com"); 

post.setEntity(new StringEntity(arr.toString())); 

HttpResponse response = httpclient.execute(post); 
+0

如何使用post發送array.can你可以分享一下。我也會搜索。 – 2013-03-19 07:49:32

+0

我已經添加了一個例子。我沒有編譯它,所以它可能有一些錯別字。 – kamituel 2013-03-19 07:55:27

+0

你正在發送字符串文本,而不是數組。不是嗎? – 2013-03-19 07:56:35

1

HTTP允許你發送文本。你需要用文本表達數組。這意味着你必須以某種方式編碼它。

如果您從HTML表單發送數據,它將被編碼爲application/x-www-form-urlencoded。以這種格式表示數據數組的常用方法是爲數據的多個組件提供相同的名稱。 PHP允許表示更復雜的數據結構,但代價是失去了簡單性。它增加了規則名稱必須在[]結束,當你編碼它們時,它將變成%5B%5D

example.php?foo%5B%5D=1&foo%5B%5D=2 

然後這給你一個數據在$_GET['foo'][]陣列。

另外,你可以serialize到另一種數據格式,並編碼。 JSON是一個很受歡迎的選擇。

在JSON相同的數據是:

[1,2] 

使用JSON庫生成它,不要被糖化串在一起,建立自己的JSON。

然後,您可以編碼爲application/x-www-form-urlencoded獲得:

example.com?foo=%5B1%2C2%5D 

而且它在PHP解碼:

$array = json_decode($_GET['foo']); 
+0

看到我的代碼中添加question.Any幫助有關。 – 2013-03-19 07:43:23

+0

@AndroidKiller - 你有一個URL。構建它以匹配我在問題中描述的方法之一,而不是現在擁有的方法。 – Quentin 2013-03-19 07:44:26

+0

我從我的Android應用程序發送。 – 2013-03-19 08:54:11