2016-09-29 32 views
0

申し訳ありませんが、次のような状況があります。ユーザーがログインできるJavaアプリケーションがあります。ランダムキーを生成すると、HTTPリクエストを使用してこのキーをWebサイトに送信します。 。投稿データを含むAndroidのHTTPリクエスト

ウェブ側では、後で使用するためにデータベースに挿入しますが、これは既に機能しています。

今この時点では、私は非常にJava側に立ち往生しています。私はこの要求をキャッチするために設定した経路を持っており、シンプルなログをスローウェブ側で

private void startRegistration(String username, String password) { 

    String myRandomString = randomString(6); 
    String deviceId = "abc"; 
    startToast(myRandomString); 

    try { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     insertDevice(myRandomString, deviceId); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

@TargetApi(Build.VERSION_CODES.KITKAT) 
public void insertDevice(String randomString, String deviceId) throws IOException { 

//  String urlParameters = "key=" + randomString + "&device_id="+ deviceId; 
//  byte[] postData  = urlParameters.getBytes(StandardCharsets.UTF_8); 
//  int postDataLength = postData.length; 
    String request  = "http://website.com/test"; 
    URL url   = new URL(request); 

    HttpURLConnection conn= (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setInstanceFollowRedirects(false); 
     conn.setRequestMethod("GET"); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     conn.setRequestProperty("charset", "utf-8"); 
//   conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); 
     conn.setUseCaches(false); 

    try(DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) { 
//   wr.write(postData); 
     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_SHORT; 

     Toast toast = Toast.makeText(context, "test", duration); 
     toast.show(); 
     } 
    } 

::情報を要求はしても、これまで取得する場合、私がチェックできるように:私は、httpリクエストを試すには、次のコードを使用していますそこには、これは次のようになります。私は私のブラウザでURLを打ったとき、私は私のアプリを使用する場合

public function create() { 

    Log::info('I got here, hurray!'); 
} 

は、今私は私にはない、ログが表示されて見ることができます。しかし、エラーも投げられません。

最後にPOSTリクエストを使用して、ランダムキーとデバイスIDの両方をWebサイトに送信したいと思います。どんな助けも大いにありがとうございます

+0

あなたは[OkHttp]使用することができます(http://四角あなたは(javadoc

ここ

は、POSTリクエストの一例だ「接続されているに依存する操作を」conn.connect()を呼び出したりすることによって、要求を行うことができます.github.io/okhttp /)ライブラリ。あなたの仕事はずっと簡単になります。 – pike

+0

http://stackoverflow.com/questions/11766878/sending-files-using-post-with-httpurlconnection次のリンク – Anjali

+0

あなたは 'conn.connect()'を呼び出すようではありません... – injecteer

答えて

1

あなたは接続を設定していますが、要求をトリガーしていません。

public void insertDevice(String randomString, String deviceId) { 

    String request = "http://website.com/test"; 
    URL url = new URL(request); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    conn.setRequestMethod("POST"); 

    String urlParameters = "key=" + randomString + "&device_id=" + deviceId; 
    byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8); 

    conn.setDoOutput(true); 

    try (OutputStream os = conn.getOutputStream()) { 
     os.write(postData); 
    } 

    conn.connect(); 

    // Get response code, e.g. 200. 
    // conn.getResponseCode(); 

    // Read server response data with conn.getInputStream() or conn.getErrorStream(). 

    conn.disconnect(); 
} 
+0

悲しいことにこれはまだWebサーバー上のログをポップしませんが、エラーもスローされません。 – killstreet

+0

@killstreetは固定バージョンではないo GETサーバーにヒット? – nandsito

+0

気にしない、ちょうどサーバーのログが少し遅れていた、あなたはすばらしかった:)本当にありがとう! – killstreet

関連する問題