2014-01-17 65 views
0

我有一個問題,從android發送數據到php腳本。我在網上搜索了答案,爲什麼它不起作用,但沒有答案的工作。我也嘗試使用$ _ GET和$ _SERVER,但它也不起作用。任何建議我做錯了什麼? 的Android代碼:從android發送數據到PHP

int timout = 10000; 
     try { 
      JSONObject json = new JSONObject(); 
      json.put("skola", regid); 
      Log.w("test","json array== "+json); 
      HttpParams httpParams = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(httpParams, 
        timout); 
      HttpConnectionParams.setSoTimeout(httpParams, timout); 
      HttpClient client = new DefaultHttpClient(httpParams); 

      HttpPost request = new HttpPost(url); 
      request.setEntity(new ByteArrayEntity(json.toString().getBytes(
        "UTF8"))); 
      request.setHeader("json", json.toString()); 
      HttpResponse response = client.execute(request); 
      HttpEntity entity = response.getEntity(); 

      if (entity != null) { 
       InputStream instream = entity.getContent(); 

       String result = convertStreamToString(instream); 
       Log.i("Read from server", result); 
       Toast.makeText(SettingsActivity.this, result, 
         Toast.LENGTH_LONG).show(); 
      } 
     } catch (Throwable t) { 
      Toast.makeText(SettingsActivity.this, "Request failed: " + t.toString(), 
        Toast.LENGTH_LONG).show(); 
     } 

和我的PHP代碼:

<?php 

$obj=$_POST['json']; 
$db=json_decode($obj,true); 

file_put_contents('myTextFile.txt',$db); 


$con = mysql_connect("localhost","avg","1zmaInas"); 
mysql_select_db("datubazes", $con); 
mysql_query ("set character_set_client='utf8'"); 
mysql_query ("set character_set_results='utf8'"); 
mysql_query ("set collation_connection='utf8_general_ci'"); 
mysql_query ("SET NAMES utf8"); 
    $result = mysql_query("SELECT * FROM saraksts WHERE skola='$db' "); 
    while($row = mysql_fetch_assoc($result)) 
    { 
    $db=$row['datubaze']; 
    } 
$con = mysql_connect("localhost","avg","1zmaInas"); 

    mysql_select_db($db, $con); 
    $result = mysql_query("SELECT klase FROM klases"); 
    while($row = mysql_fetch_assoc($result)) 
    { 
    $output[]=$row; 
    } 
print(json_encode($output)); 
mysql_close($con); 
?> 
+1

什麼是錯誤?你可以發佈你的logcat堆棧跟蹤嗎? –

+0

有沒有錯誤的PHP腳本只是沒有收到數據和響應爲空。 – user3198920

回答

0

我想你作爲一個header設置JSON數據,然後嘗試讀取它作爲POST數據。

此行會將JSON作爲一個名爲 「JSON」 頭:

request.setHeader("json", json.toString()); 

而且PHP的線嘗試獲取JSON字符串作爲POST數據:

$obj=$_POST['json']; 

總結:一標題與POST字段不同。

您從PHP腳本中看到了哪些標題?

查看發佈數據的回答:Sending POST data in Android

+0

我沒有經驗的PHP。但我認爲這是'json'。 – user3198920

+0

我不懷疑它是JSON,問題是你發送它在一個地方(標題),然後從其他地方(POST)檢索它, – s1m3n