2016-04-11 24 views
0

Android uygulamamdan JSON nesnesini sunucuma gönderiyorum. Benim geliştirme yerel makinede iyi çalışıyor. Verileri alıp kodunu çözüyorum. Ama sunucumu motor hesaplamak için dağıttığımda, sunucu ucundaki verileri almıyorum. Veri Android istemcisinden gönderilir. JSON'u tarayıcımdan da test ettim ve 200 yanıt kodu alıyorum. İşte kod parçacıkları şunlardır:JSON, Android sunucusundan hesap makinesi bilgisine geri dönüyor

// İstemci

// {, "test" "1234"} Bu gönderiyorum JSON olduğunu burada JSONObject nesnesi oluşturun

JSONObject json = new JSONObject(); 
json.put("test", args[0]); 

String postData=json.toString(); 

// Send POST output. 
OutputStreamWriter os = new OutputStreamWriter(urlConn.getOutputStream(), "UTF-8"); 
os.write(postData); 
Log.e("NOTIFICATION", "Sent"); 
os.close(); 

BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
String msg=""; 
String line = ""; 
while ((line = reader.readLine()) != null) { 
    msg += line; 
} 
Log.i("msg=",""+msg); 

// Sunucu

Android uygulamasında ne yaptığım önemli değil, bir dize gönderir ancak sunucu tarafında boş dize alıyorum. Neden bu kadar uzak olduğunu anlayamıyorum.

+0

$ json’u yankılanıyorsanız ne olur? Nasıl olmasını bekledin mi? – Jon

+0

@Jon Bunu hatırlattığın için teşekkürler. Şimdi sorumu güncelledim. Bu String (0) döndürür. Android'den gönderdiğim alfanumerik değeri bekliyorum. –

cevap

0

Sorun, HttpRLConnection tarafından ortaya çıkıyor. Sadece the accepted answer in this SO question, gibi sadece kaldırmak için '

urlConnection.setChunkedStreamingMode (0); Burada `urlConnection = HttpUrlCooenction();

`

1

sunucuya gönderme sonrası isteğinden sonra sen bu kodlarla sonrası vücudu alabilirsiniz:

<?php 

    $post_body = file_get_contents("php://input"); 
    $json = json_decode($post_body); 
    $pasid = $json->{"test"}; 

    echo $pasid; 
?> 
+0

Var_dump ($ pasid) kullanarak yankılanmanız gerekir; ve sen sadece benimki gibi null döndürür. –

2

kodunuzu çok kafa karıştırıcı bu gibi yapabilirsiniz uzak veritabanına uygulamadan veri göndermek için iyi bir yol değildir Bu `

formu uygulaması

String uri="But your http URL"; 
URL url = new URL(uri); 
     HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
     con.setRequestMethod("POST"); 
      con.setDoOutput(true); 
      OutputStreamWriter writer=new  OutputStreamWriter(con.getOutputStream()); 
StringBuilder sb=new StringBuilder(); 
sb.append("username="+"Naham"); 
sb.append("password="+"passNaham"); 
      writer.write(sb.toString()); 
      writer.flush(); 

basit php web hizmeti bilin

 

    $data = array("result" => 0, "message" => "Error!"); 
    if ($_SERVER['REQUEST_METHOD'] == "POST") { 
       $user_name = isset($_POST['username']) ? $_POST['user_name'] : ""; 
       $user_password = isset($_POST['user_password']) ?  $_POST['user_password'] : ""; 

       // do some thing here 
    $data = array("result" => 1, "message" => "welcome"); 
    } else 
     $data = array("result" => 0, "message" => "Error!"); 
    /* Output header */ 
    header('Content-type: application/json'); 
    echo json_encode($data); 
    ?> 


+0

kullanıcı adının kullanıcı_adıyla eşleşmesi gerekmez mi? Neden user_name? Kullanıcı adı olmalı mı? –

+0

Sunucu tarafında dize (0) aldım, ancak kodumla kullandığım NULL değil. –

+0

Evet, şu cevabı düzenleyeceğim doğru değilsin –

İlgili konular