2017-02-21 25 views
0

私のアンドロイドアプリから自分のPHPコードにデータを送信してそこに取得しようとしていますが、私のウェブサイトに値を印刷すると、私はアンドロイドのために試してみました例のいくつかは以下のとおりです。アンドロイドからphpにデータを送信して取得しています

OutputStream os = null; 
     InputStream is = null; 
     HttpURLConnection conn = null; 
     try { 
      //constants 
      URL url = new URL(tempURL); 
      JSONObject jsonObject = new JSONObject(); 
      jsonObject.put("message", "message"); 
      jsonObject.put("password", "password"); 
      String message = jsonObject.toString(); 
      Toast.makeText(this, "message = " + message, Toast.LENGTH_SHORT).show(); 

      conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(10000 /*milliseconds*/); 
      conn.setConnectTimeout(15000 /* milliseconds*/); 

      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 
      conn.setFixedLengthStreamingMode(message.getBytes().length); 

      //make some HTTP header nicety 
      conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); 
      conn.setRequestProperty("X-Requested-With", "XMLHttpRequest"); 

      //open 
      conn.connect(); 

      //setup send 
      os = new BufferedOutputStream(conn.getOutputStream()); 
      os.write(message.getBytes()); 
      //clean up 
      os.flush(); 

      //do something with response 
      is = conn.getInputStream(); 
      //String contentAsString = readIt(is,len); 
     } catch (IOException | JSONException e) { 
      e.printStackTrace(); 
     } finally { 
      //clean up 
      try { 
       os.close(); 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      conn.disconnect(); 
     } 

もう一つは次のとおりです。

HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://samplewebsite.com/welcome.php"); 
      try { 
       List<NameValuePair> nameValuePairs = new ArrayList<>(2); 
       nameValuePairs.add(new BasicNameValuePair("state", "state")); 
       nameValuePairs.add(new BasicNameValuePair("tag", "tag")); 
       Toast.makeText(this, "nameValuePairs = " + nameValuePairs, Toast.LENGTH_LONG).show(); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       httpclient.execute(httppost); 
//    msgTextField.setText(""); // clear text box 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
      } 

私はPHPで試してみましたが、コードのいくつかは、次のとおりです。

print_r("tag = " + $_POST['tag']); 

$json = file_get_contents('php://input'); 
$obj = json_decode($json); 
$tag = $obj->{'tag'}; 
$state = $obj->{'state'}; 

私に助けてください、これらの試験のいずれもプレーは私のために働いた。どんな解決策が役に立つでしょう。ありがとう!

+0

どこのPHPコードをホストしていますか?何かエラーが出ていますか?私はあなたが別のスレッドを使用しているかどうかは分かりませんが、バックグラウンドスレッドに置かないと、アプリはクラッシュするはずです。 – Rafa

+0

'welcome.php'の投稿をどのように扱うかを教えてください –

+0

RESTコンソールを使ってAndroid以外でこれを最初にテストし、サーバ側で動作していることを知っておく必要があります。その後、クライアントをデバッグできます。 –

答えて

0

私は、AndroidからPHPにデータを送信する方法のこのコードが見つかりました:

InputStream inputStream = null; 
     String result = ""; 
     String url = [YOUR URL HERE]; 

     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      String json1 = ""; 
      JSONObject jsonObject = new JSONObject(); 
      jsonObject.accumulate("key", message); 

      json1 = jsonObject.toString(); 
      StringEntity se = new StringEntity(json1); 
      httpPost.setEntity(se); 
      httpPost.setHeader("Accept", "application/json"); 
      httpPost.setHeader("Content-type", "application/json"); 
      HttpResponse httpResponse = httpclient.execute(httpPost); 

      inputStream = httpResponse.getEntity().getContent(); 

      // 10. convert inputstream to string 
      if (inputStream != null) { 
       result = convertInputStreamToString(inputStream); 
       myJSON = result; 
      } else { 
       result = "Did not work!"; 
      } 
     } catch (Exception e) { 
       Log.d("InputStream", e.getLocalizedMessage()); 
} 

方法convertInputStreamToStringのコードは次のとおりです。

private static String convertInputStreamToString(InputStream inputStream) throws IOException { 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
    String line = ""; 
    String result3 = ""; 
    while ((line = bufferedReader.readLine()) != null) 
     result3 += line; 

    inputStream.close(); 
    return result3; 
} 

私のPHPコードアンドロイドからデータを受け取るために次のとおりです。

$json = file_get_contents('php://input'); 
$obj = json_decode($json); 
echo $obj->{'key'}; 

希望します。

関連する問題