2016-10-08 3 views
1

を働いていない:AndroidのPOSTリクエストは、私は、このやっている

@Override 
protected Void doInBackground(String... strings) { 

    try { 
     String query = "username=" + strings[0] + "&duration=" + strings[1] + "&distance=" + strings[2]; 
     URL url = new URL(ScoresActivity.URL); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("POST"); 
     Writer writer = new OutputStreamWriter(conn.getOutputStream()); 
     writer.write(query); 
     writer.flush(); 
     writer.close(); 
     /*conn.addRequestProperty("username", strings[0]); 
     conn.addRequestProperty("duration", strings[1]); 
     conn.addRequestProperty("distance", strings[2]);*/ 
     Log.v(TAG, strings[0] + " - " + strings[1] + " - " + strings[2]); 
     //conn.connect(); 
    } catch(Exception e) { 
     Log.e(TAG, "exception", e); 
    } 

    return null; 
} 

をしかし要求はちょうど私が送信されたデータが表示されるはずのサーバー上で...サーバー上で有効になりませんが、私はしないでください

curl -XPOST --data "username=duri&duration=600&distance=555" http://someurl.com/ 

とそれが動作する...何の問題が考えられます。彼らは

私もこれを試してみました参照してください?

+0

'catch(Exception e)'ブロックに入っていないことを確認しましたか? –

+1

はい私はステップバイステップでそれをデバッグし、それは 'try'ブロックを通過しました – durisvk

答えて

4

ちょっとこの構文を使用してください。

@Override 
     protected String doInBackground(String... params) { 

      String urlString = params[0]; 
      String userName = params[1]; 
      String password = params[2]; 
      URL url = null; 
      InputStream stream = null; 
      HttpURLConnection urlConnection = null; 
      try { 
       url = new URL(urlString); 
       urlConnection = (HttpURLConnection) url.openConnection(); 
       urlConnection.setRequestMethod("POST"); 
       urlConnection.setDoOutput(true); 

       String data = URLEncoder.encode("userName", "UTF-8") 
         + "=" + URLEncoder.encode(userName, "UTF-8"); 

       data += "&" + URLEncoder.encode("password", "UTF-8") + "=" 
         + URLEncoder.encode(password, "UTF-8"); 

       urlConnection.connect(); 

       OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream()); 
       wr.write(data); 
       wr.flush(); 

       stream = urlConnection.getInputStream(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"), 8); 
       String result = reader.readLine(); 
       return result; 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       if (urlConnection != null) { 
        urlConnection.disconnect(); 
       } 
      } 

      try { 
       Thread.sleep(2000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
       Log.i("Result", "SLEEP ERROR"); 
      } 
      return null; 
     } 

これが役に立ちます。 :)

+3

はい、問題は私がストリームリーダから何も読んでいないので、リクエストは送信されませんでした。あなたが結果を必要としなくても、動作するものを得るための 'BufferedReader' ... – durisvk

+0

私は同じ問題を抱えていました。 –

関連する問題