【发布时间】:2015-06-18 07:54:57
【问题描述】:
每当我发送post request 时,我都会尝试发送php script 发送email。如果我在web browser 中加载我的网站,它确实会发送一封邮件。但是每当我在Android 中发送post request(调用postData 方法)时,什么都没有发生。为什么它不起作用?
public void postData(JSONObject object){
//not using json object yet since i'm just testing...
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://test.com/email");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<>(2);
nameValuePairs.add(new BasicNameValuePair("test1", "test1"));
nameValuePairs.add(new BasicNameValuePair("test2", "test2"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
// Execute HTTP Post Request
ResponseHandler<String> responseHandler=new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
//Just display the response back
//displayToastMessage(responseBody);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
这里是我喜欢的 php:
public function sendMail()
{
$test = $_POST["test1"]
$to = "marco.test@gmail.com";
$subject = "HTML email";
$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>$test</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";
mail($to,$subject,$message,$headers);
}
【问题讨论】:
-
你有什么错误
-
你没有调用你的 sendMail 函数
-
我用的是Laravel,在路由中声明了sendMail函数,每当加载url时,它会自动调用函数
-
我没有立即看到错误。但是,
HttpUrlConnection现在是推荐的实现。HttpClient已弃用。你为什么要执行你的帖子两次?你从response.getStatusLine().getStatusCode()得到什么?