2012-10-05 100 views
1

我已經嘗試了幾件事情,但我的android應用程序沒有發送發佈參數。我在虛擬設備上運行應用程序。這是代碼:不發送POST參數

@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(); 
    } 
} 

它應該發送一個POST請求到PHP頁面。此頁面顯示POST陣列的輸出:

<?php 
print_r($_POST); 
?> 

當我運行該應用程序時,它顯示一個空數組。

回答

0

問題解決了。有一個htaccess文件重定向了所有非www頁面。

1

那是因爲你發送JSON

標準的PHP $ _ POST從鍵值對建立 所以你應該張貼鍵1 =值&鍵2 =值

還是應該從

閱讀
$HTTP_RAW_POST_DATA 

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

和使用

json_decode($postdata); 

PHP不會自動解碼JSON你

你也可以用另一種方法,並發表您的JSON像數據= YourJsonCode

,然後使用其解碼json_decode($ _ POST [ 'data']);

+0

當我這樣做:'var_dump(json_decode($ postdata));'它返回NULL –

+0

do echo $ postdata;它包含正確的json嗎? – MySqlError

+0

不顯示任何內容:(但我也嘗試了其他方式發送帶有不帶json的發佈參數的請求,也不起作用。 –

0

嘗試發送url編碼的名稱/值對。您也可以使用EntityUtils將響應轉換爲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())); 
+0

謝謝你的回答。但它不工作。'$ _POST'數組是空的,'$ _SERVER ['REQUEST_METHOD']'GET GET –