出于某种原因,我无法让我的异步任务传递我设置的帖子参数。任何帮助表示赞赏。
这是我的 onClick 调用线程。请注意,customerInfo 不为空,并且每个索引都有一个值。
已编辑:将客户端和发布声明移至 doInBackground 并取出额外的不需要的线程。 EDITED2:显然,当您点击您的网络服务器上的子目录时,您声明您的网址
http://IP/subDirectory
没有尾随“/”的 apache 不会将参数传递给您的 index.php。
@Override
public void onClick(View v) {
new RegisterPost(progress).execute();
}
这是我的 doInBackground
@Override
protected Void doInBackground(Void... voids) {
String[] customerInfo = getRegistrationInfo();
// Post
// Send info to tmiszone
String url = "http://SERVER_ADDRESS/"; // I had to add index.php to my url to get around the issue.
client = new DefaultHttpClient();
post = new HttpPost(url);
// Set post parameters
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("salesCode", customerInfo[0]));
pairs.add(new BasicNameValuePair("firstName", customerInfo[1]));
pairs.add(new BasicNameValuePair("lastName", customerInfo[2]));
try {
post.setEntity(new UrlEncodedFormEntity(pairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// Make connection
try {
response = client.execute(post);
} catch (ClientProtocolException e){
// TODO handle
response = null;
} catch (IOException e) {
// TODO handle
response = null;
} catch (Exception e) {
// TODO handle
response = null;
}
return null;
}
这是我的php代码。
<html>
<body>
<?php
error_log("hit by app");
foreach($_POST as $key=>$value){
error_log("// ".$key." ".$value);
}
?>
</body>
</html>
现在在我的 apache 日志中,我看到“应用程序命中”消息,但没有别的。我的应用程序得到一个空的 html 页面,其中只有 html 和 body 标记,正如 php 代码所期望的那样。