2016-09-29 4 views
0

D'accord, j'ai la situation suivante, j'ai une application Java, où les utilisateurs peuvent se connecter, une fois qu'ils le font, il va générer une clé aléatoire, je souhaite envoyer cette clé à mon site web en utilisant des requêtes http .android Demande HTTP avec poste

Sur le côté Web je vais l'insérer dans la base de données pour une utilisation ultérieure, cela fonctionne déjà.

Maintenant, en ce moment, je suis très coincé avec le côté java. J'utilise le code suivant pour essayer la demande http:

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

Du côté web, j'ai un itinéraire fixé pour attraper cette demande et simple lance un journal :: informations pour que je puisse vérifier si la demande est encore jamais là, cela ressemble à suivre:

public function create() { 

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

maintenant quand je frappe l'URL dans mon navigateur je peux voir le journal qui apparaît, quand j'utiliser mon application, je ne sais pas. Mais il n'y a pas d'erreur non plus. À la fin, je voudrais utiliser une requête POST et envoyer à la fois la clé aléatoire et l'ID de l'appareil sur le site Web. toute aide est très appréciée

+0

vous pouvez utiliser [OkHttp] (http: // carré .github.io/okhttp /) Bibliothèque. Cela rendra votre tâche beaucoup plus facile de cette façon. – pike

+0

http://stackoverflow.com/questions/11766878/sending-files-using-post-with-httpurlconnection Le lien suivant vous aidera – Anjali

+0

vous ne semblez pas appeler 'conn.connect()' ... – injecteer

Répondre

1

Vous configurez la connexion mais vous ne déclenchez pas la demande. Vous pouvez effectuer la demande en appelant conn.connect() ou « les opérations qui dépendent d'être connecté » (javadoc)

Voici un exemple d'une requête POST:

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

Malheureusement cela ne fait toujours pas apparaître mes journaux sur le serveur Web, mais aucune erreur n'est levée non plus. – killstreet

+0

@killstreet pas même une version fixe o GET a frappé le serveur? – nandsito

+0

ne vous dérange pas, il travaillait juste le journal du serveur avait un peu de retard, vous êtes incroyable :) merci beaucoup! – killstreet