Unë jam përpjekur të dërgoj një kërkesë POST në një URL nga aplikacioni im Android, por gjithçka që marr është një $_POST bosh. Këtu është kodi im, ai po funksionon brenda një Asynctask. Shikova disa çështje si kjo këtu në StackOverflow, por asnjëra prej tyre nuk mund të më ndihmonte.
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php");
try {
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("id", "12345"));
pairs.add(new BasicNameValuePair("name", "John"));
pairs.add(new BasicNameValuePair("post", "test123"));
post.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8));
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
HttpResponse response = httpClient.execute(post);
String text = EntityUtils.toString(response.getEntity());
System.out.println("STATUS CODE " + response.getStatusLine().getStatusCode());
System.out.println("RETURN " + text);
} catch (ClientProtocolException e) {
System.out.println("ERROR1: " + e.getStackTrace());
} catch (IOException e) {
System.out.println("ERROR2: " + e.getStackTrace());
}
Nga ana e serverit, unë kam një testim të skriptit të testit PHP nëse ndryshorja $_POST është në rregull.
<?php echo "ISSET = " . isset($_POST["id"]) . isset($_POST["name"]) . isset($_POST["post"]); ?>
Gjithçka që marr është një $_POST i pacaktuar
STATUS CODE 200
RETURN ISSET =
Nuk marr asnjë paralajmërim gabimi dhe aplikacioni nuk rrëzohet.
Unë u përpoqa të vendos variablat si një kërkesë GET bashkangjitur URL-së dhe ndryshova skedarin tim PHP për të përpunuar kërkesën $_GET:
HttpPost post = new HttpPost("http://www.somesite.com/clients/app-controller/posts.php?id=1234&name=John&post=test123");
Ajo funksionoi mirë. Mund të lexoja të gjitha variablat $_GET në skriptin PHP. Por më duhet që të jetë një kërkesë POST.
Unë kam lejen e INTERNET-it në AndroidManifest.xml. Në të njëjtin aplikacion bëj kërkesa për një skript tjetër PHP dhe funksionon siç pritej.
<uses-permission android:name="android.permission.INTERNET" />
ndonje mendim?