我正在尝试将JSON字符串发布到我的PHP服务器,但服务器端根本没有发生任何事情。
这是服务器代码:
<?php
$json = $_POST['json'];
$decoded = json_decode($json);
echo($decoded);
?>
这是JAVA代码:
public void sendError(Error e)
{
String json = e.toJSONString();
try
{
if(url == null)
{
url = new URL("http://www.rstougaard.dk/errorHandler");
}
if(conn == null)
{
conn = (HttpURLConnection) url.openConnection();
}
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
conn.setRequestProperty("json", URLEncoder.encode(json));
output = new DataOutputStream(conn.getOutputStream());
conn.connect();
output.writeBytes("json=" + URLEncoder.encode(json, "UTF-8"));
output.flush();
BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(input.ready())
{
System.out.println(input.readLine());
}
System.out.println(conn.getResponseCode() + " " + conn.getResponseMessage());
} catch (MalformedURLException ex)
{
Logger.getLogger(ConnectionController.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException exc)
{
Logger.getLogger(ConnectionController.class.getName()).log(Level.SEVERE, null, exc);
}
}
.getResponseCode()和.getResponseMessage()分别返回'200'和'OK'。而inputStream只是打印来自站点的php代码,后跟JSON字符串,这对我来说很奇怪。
我没有来这里?
修改
我已经在.setResponseMethod()中更改了“GET to”POST。但仍然没有用。
修改
我尝试使用curl来检查服务器响应,但它与我的java代码中的inputStream是一样的。它从网站打印html / php代码,而不是给我回复。
答案 0 :(得分:0)
您可能正在从客户端代码发送GET请求:
conn.setRequestMethod("GET");
服务器检查POST时。尝试将其更改为“POST”
此外,正如Evgeny Lebedev建议的那样,您可能会尝试使用CURL或类似的东西预先测试您的服务器响应
答案 1 :(得分:0)
我弄清楚出了什么问题。我基本上是个傻瓜,并且认为如果我运行代码我可以检查是否有任何输出发生在chrome中,但当然它没有,因为这是一个不同的请求,他们不会发生冲突。
上面的代码在我的案例中按预期工作。但无论如何,谢谢你们的帮助,并为此感到抱歉!