2016-09-29 8 views
0

In Ordnung, ich habe die folgende Situation, ich habe eine Java-App, wo Benutzer anmelden können, sobald sie es einen zufälligen Schlüssel generieren, möchte ich diesen Schlüssel zu meiner Website mit http Anfragen senden .android HTTP-Anfrage mit Post-Daten

Auf der Web-Seite werde ich es in die Datenbank für die spätere Verwendung einfügen, das funktioniert bereits.

Jetzt in diesem Moment bin ich sehr fest mit der Java-Seite. Ich verwende den folgenden Code, um die HTTP-Anforderung, um zu versuchen:

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(); 
     } 
    } 

Auf der Web-Seite habe ich eine Route um diese Anforderung zu fangen gesetzt und einfachen Würfen ein Protokoll :: info so kann ich überprüfen, ob die Anforderung auch immer bekommt dort sieht es wie folgt:

public function create() { 

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

jetzt, wenn ich die URL in meinem Browser schlagen kann ich das Protokoll erscheinen sehen, wenn ich meine app, ich weiß nicht. Aber es gibt auch keine Fehler.

Am Ende möchte ich eine POST-Anfrage verwenden und sowohl den Zufallsschlüssel und Geräte-ID an die Website senden. jede Hilfe wird sehr geschätzt

+0

Sie können [OkHttp] (http: // Quadrat .github.io/okhttp /) Bibliothek. Es wird Ihre Aufgabe auf diese Weise viel einfacher machen. – pike

+0

http://stackoverflow.com/questions/11766878/sending-files-using-post-with-httpurlconnection folgenden Link wird Ihnen helfen – Anjali

+0

Sie scheinen nicht zu rufen "conn.connect()" ... – injecteer

Antwort

1

Sie richten die Verbindung ein, aber Sie lösen die Anfrage nicht aus. Sie können die Anfrage durchführen, indem conn.connect() oder „Operationen, die auf verbunden ist abhängig“ Aufruf (javadoc)

Hier ein Beispiel für eine POST-Anforderung ist:

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

Leider Dies ist immer noch nicht meine Protokolle auf dem Webserver, aber keine Fehler werden ebenfalls geworfen. – killstreet

+0

@killstreet nicht einmal eine feste Version o GET Hit den Server? – nandsito

+0

macht nichts, es funktionierte nur das Serverprotokoll hatte eine kleine Verzögerung, du bist erstaunlich :) vielen Dank! – killstreet

Verwandte Themen