编辑:这是我的网站日志xx.xx.xxx.xx -- 27/Jan/2012:17:42:24 -0500 "POST /dir/addData2.php HTTP/1.1“200 - www.mywebsites.com "-”Java/1.7.0“"-”
我在1&1托管我的网站,我想有一个页面blank.php,应该采取POST请求,并上传到我的数据库。我认为我发送的帖子是正确的,但不知何故我在我的网站上没有正确地处理它。因为没有任何东西插入到我的数据库中。响应的内容长度为0,但是即使我发送一个带有字符串长度的报头,它也不会改变。另一种选择是,主机不允许我进行远程post请求(仍在等待回复)。
我从一个Java应用程序发送post请求,如下所示:
URL url = new URL("www.mywebsite.com/blank.php");
HttpURLConnection request = (HttpURLConnection)url.openConnection();
request.setRequestProperty("Content-type","application/x-www-form-urlencoded");
request.setRequestMethod("POST");
OutputStreamWriter post = new OutputStreamWriter(request.getOutputStream());
String data = URLEncoder.encode("account", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8");
data += "&" + URLEncoder.encode("message", "UTF-8") + "=" + URLEncoder.encode(message[2], "UTF-8");
data += "&" + URLEncoder.encode("type", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8");
post.write(data);
post.flush();
/*
/ String example
/account=103&message=Feller+1391.88+0&type=103
*/来自服务器的响应是:
null=[HTTP/1.1 200 OK]
Date=[Fri, 27 Jan 2012 21:59:10 GMT]
Content-Length=[0]
Keep-Alive=[timeout=2, max=200]
Connection=[Keep-Alive]
Content-Type=[text/html]
Server=[Apache]
X-Powered-By=[PHP/5.2.17]我的网页有这个基本的PHP代码(现在,将在以后改进/检查)
$link = mysql_connect($hostname, $username, $password);
$db_selected = mysql_select_db($database, $link);
$query = "INSERT INTO newData(account, message, type) VALUES('$_POST[account]', '$_POST[message]', '$_POST[type]')";
mysql_query($query) || die();我想指出的是,我没有私有服务器,稍后我可能会使用http://hc.apache.org/httpcomponents-core-ga/examples.html。现在我只想从我的Java应用程序中发送一个字符串,然后用PHP接收它并插入到MySQL数据库中。
发布于 2012-01-28 06:54:05
您还没有告诉客户端代码这是一个POST请求。默认情况下,它可能会执行GET。
url = new URL(targetURL);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");发布于 2012-01-28 06:53:10
是的,我确信你的ISP允许"post“和"get”HTTP服务器请求。
从表面上看,您的Java和PHP看起来都“还可以”。
强烈建议:
1)检查服务器上的Apache日志。
确保请求已到达(很可能已到达)。
检查错误(您的请求很可能没有错误-但您应该在Apache错误日志中看到一些内容。
2)验证PHP是否正常工作。
使用"phpinfo ();“编写一个"hello world”页面是一个很好的方法。
3)验证MySQL是否正常工作。
编写一个"hello world“PHP页面来验证您是否可以1)连接,2)进行查询,3)在您的web浏览器中回显查询,这是理想的做法。
4)验证您可以成功读取您认为从客户端获取的"$_POSTaccount“值。
5)在这一点上,您应该能够:
a)让客户端与您的服务器通信
b)读取post请求并将其写入数据库
‘希望这会有帮助……如果你有任何具体的问题/问题,请回复。
发布于 2012-01-28 07:00:02
看起来您没有在HttpUrlConnection上设置请求方法,缺省值是GET。你需要像这样的东西
request.setRequestMethod("POST");如果这不起作用,我会从一开始就考虑使用Apache HTTP客户端,它比Java的标准HTTP客户端API更容易使用。
https://stackoverflow.com/questions/9041075
复制相似问题