2016-04-20 7 views
-1

これは私のPHPスクリプトです。私はPHPスクリプトを使用してmysqlサーバにデータを投稿しようとしています。データは正常にレジスタ関数に追加されます。私のURL接続にも問題はありません。問題であると想定されるのは?java側にデータがあるのに、httpurlconnectionでデータベースにデータを投稿できません

<?php 
include ('classes/functions.php'); 
    if(isset($_POST['product_id'])){ 
     $product_id = $_POST['product_id']; 

     $insert_order = "INSERT INTO orders (product_id) values 
('$product_id')"; 

     $run_order = mysqli_query($con, $insert_order); 

     if($run_order){ 
      echo"<script>alert('Order Successfully!')</script>"; 
     } 
    } 
?> 

これは私のJavaスクリプトです。

public final class confirm extends Context { 

private static final String REGISTER_URL = 
"http://192.168.43.214/apexStore2/confirm.php"; 

public static void register(String id) { 
    class RegisterUser extends AsyncTask<String, Void, String> { 
     ProgressDialog loading; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
     } 
    @Override 
     protected String doInBackground(String... params) { 

      HashMap<String, String> data = new HashMap<>(); 
      data.put("product_id",params[0]); 

      String result = sendPost(REGISTER_URL,data); 

      return result; 
     } 
    } 

    RegisterUser ru = new RegisterUser(); 
    ru.execute(id); 
} 
public static String sendPost(String requestURL, 
           HashMap<String, String> postDataParams) { 

    URL url; 
    String response = " "; 
    try { 
     url = new URL(requestURL); 

     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 
     conn.setRequestProperty("Content-Length", "" + 
        Integer.toString(getPostDataString(postDataParams). 
    getBytes().length)); 
     conn.setRequestProperty("Content-Language", "en-US"); 
     conn.setReadTimeout(15000); 
     conn.setConnectTimeout(15000); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 


     OutputStream os = conn.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(
       new OutputStreamWriter(os, "UTF-8")); 
     writer.write(getPostDataString(postDataParams)); 
     System.out.println("wei" + getPostDataString(postDataParams)); 
     Log.d(getPostDataString(postDataParams), "onCreate()"); 
     writer.flush(); 
     writer.close(); 
     os.close(); 
     int responseCode=conn.getResponseCode(); 

     if (responseCode == HttpsURLConnection.HTTP_OK) { 
      BufferedReader br=new BufferedReader(new 
    InputStreamReader(conn.getInputStream())); 
      response = br.readLine(); 
     } 
     else { 
      response="Error Registering"; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return response; 
} 

private static String getPostDataString(HashMap<String, String> params) 
throws UnsupportedEncodingException { 
    StringBuilder result = new StringBuilder(); 
    boolean first = true; 
    for(Map.Entry<String, String> entry : params.entrySet()){ 
     if (first) 
      first = false; 
     else 
      result.append("&"); 

     result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
     result.append("="); 
     result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
    } 

    return result.toString(); 
} 

答えて

0

これはエミュレータ上またはデバイス上で実行していますか?いずれにしても、デバイスが192.168.43.214の内部IPを見るために正しいネットワーク上にあるかどうかを確認すると便利です。特に、データ接続を使用して接続する場合は、外部IPを使用する必要があります。それ以外に、アンドロイドログの出力は?

+0

携帯電話を使用しています。このipは他の機能があるので問題なくテストされ、動作します。 –

+0

アンドロイドのログには、私が渡す値だけが表示されます。それは成功を示していません –

+0

あなたは出力を投稿することはできますか?また、サーバーがクライアントからの接続をまったく取得していないか、何もしていませんか?私はあなたのコードで何かが間違っているとは思っていませんが、出力に関する情報や動作の詳細情報がなければ、デバッグすることは非常に困難です。 –

関連する問題