2014-01-17 3 views
0

안드로이드에서 PHP 스크립트로 데이터를 보내는 데 문제가 있습니다. 나는 그것이 작동하지 않는 이유에 대한 답변을 온라인에서 찾았지만 대답은 전혀 작동하지 않습니다. 또한 $ _ GET 및 $ _SERVER를 사용해 보았지만 작동하지 않습니다. 내가 뭘 잘못하고 있는거야? 안드로이드 코드 :안드로이드에서 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 스크립트가 데이터를받지 않고 응답이 null 인 오류는 없습니다. – user3198920

답변

0

난 당신이 POST 데이터로 읽으려고 다음 header로 JSON 데이터를 설정하고 생각합니다.

이 줄은 "JSON"라는 이름의 HEADER로 JSON을두고 :

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

그리고는 PHP 라인이 POST 데이터로 JSON 문자열 얻기 위해 시도 : 요약

$obj=$_POST['json']; 

을하십시오 헤더가 POST 필드와 다릅니다.

PHP 스크립트에서 볼 수있는 헤더는 무엇입니까?

게시 데이터에 대한 답변을 살펴보십시오. Sending POST data in Android

+0

나는 PHP에 익숙하지 않다. 그러나 나는 이것이 'json'이라고 생각한다. – user3198920

+0

JSON인지 의심하지 않습니다. 문제는 한 곳 (헤더)에서 보내고 다른 곳 (POST)에서 가져 오는 것입니다. – s1m3n

관련 문제