2012-03-29 4 views
1

Dies in einer Android-Anwendung, macht Java eine POST-Anfrage, mit PHP Umgang damit.Ich mache POST-Anfrage, Server empfängt und protokolliert GET-Anfrage

Dies funktioniert gut, wenn sie lokal arbeiten, Apache-Logs eine POST:

192.168.1.123 - - [29/Mar/2012:15:46:56 +0200] "POST /usuarioLogin.php HTTP/1.1" 200 292 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)" 

Bei der Remote arbeiten, Apache-Logs eine GET-Anfrage, und offensichtlich nicht die Parameter gesendet findet. Apache protokolliert den folgenden:

78.XXX.256.XXX - - [29/Mar/2012:16:20:05 +0200] "GET /usuarioLogin.php HTTP/1.1" 200 267 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)" 

den Java-Code Ausführung das POST:

private void HttpPost(String php, ArrayList<NameValuePair> nameValuePairs) { 

    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     String host = com.android.taggies.LoginUser.getContext().getResources().getString(R.string.host); 
     HttpPost httppost = new HttpPost(host + php); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 

     is = entity.getContent(); 

    } catch (Exception e) { 
     Log.e("log_tag", "Error in http connection " + e.toString()); 
    } 
} 

Und die PHP:

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("dbBaggies"); 

$q=mysql_query("SELECT count(*) as 'return' FROM users 
WHERE name='$_POST[user]' AND password ='$_POST[pass]'"); 

while($e=mysql_fetch_assoc($q)) 
{ 
    $output[]=$e; 
} 

print(json_encode($output)); 

mysql_close(); 
?> 
+1

Wenn ich mich richtig erinnere, ist dies ein Cross-Domain-Problem mit Android, die nicht in der Lage ist, POST-Anfragen an externe Server, nur GET zu tun. Ich könnte mich irren. – Th0rndike

Antwort

0

Ich habe Probleme mit einer POST-Anfragen auch einen Upload Bild zu meinem externen LAMP-Server. Das hat mir wirklich geholfen:

http://moazzam-khan.com/blog/?p=490

Es ist eine Klasse mit mehreren Methoden GET und POST. Versuchen Sie es mit:

public static HttpData post(String sUrl, Hashtable<String, String> ht) throws Exception { 
      String key; 
      StringBuffer data = new StringBuffer(); 
      Enumeration<String> keys = ht.keys(); 
      while (keys.hasMoreElements()) { 
        key = keys.nextElement(); 
        data.append(URLEncoder.encode(key, "UTF-8")); 
        data.append("="); 
        data.append(URLEncoder.encode(ht.get(key), "UTF-8")); 
        data.append("&amp;"); 
      } 
      return HttpRequest.post(sUrl, data.toString()); 
    } 

Sie benötigen einige externe Klassen, die ich denke. Bitte überprüfen Sie den Link.

Verwandte Themen