2012-03-29 41 views
0

我试图发送一些数据到一个网址与一些职位数据。 Iv尝试了以下代码: -Java Http POST没有按预期工作?

try { 
     // Construct data 
     String data = URLEncoder.encode("appid", "UTF-8") + "=" + URLEncoder.encode("2", "UTF-8"); 
     data += "&" + URLEncoder.encode("secret", "UTF-8") + "=" + URLEncoder.encode("APPSECRET", "UTF-8"); 
     data += "&" + URLEncoder.encode("usermcaccount", "UTF-8") + "=" + URLEncoder.encode("NAME", "UTF-8"); 
     data += "&" + URLEncoder.encode("actiontype", "UTF-8") + "=" + URLEncoder.encode("ACTION", "UTF-8"); 
     data += "&" + URLEncoder.encode("serverip", "UTF-8") + "=" + URLEncoder.encode("IP", "UTF-8"); 


     // Send data 
     URL url = new URL("http://maiacraft.com/api/"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoInput(true); 
     conn.setRequestMethod("POST"); 
     DataOutputStream outStream; 


     OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 

     //write parameters 
     writer.write(data); 
     writer.flush(); 
     writer.close(); 




    } catch (Exception e) { 
    } 

但它似乎并没有将其发布到服务器。所有的服务器端代码工作,因为它允许来自另一个页面,但不是从这个Java代码发布的请求...

任何想法?

+1

我会开始记录任何异常。 – hvgotcodes 2012-03-29 23:20:49

+0

根据代码 – 2012-03-29 23:22:43

+0

检查响应代码以及inputStream/errorStream您可能需要查看[Apache HttpComponents](http://hc.apache.org/)。 – Perception 2012-03-29 23:24:08

回答

3

任何想法?

  1. 你是不是检查HTTP响应状态。这会给你一些线索,看看哪里出了问题。响应状态可以指示各种事物;例如你的请求参数是错误的,URL是错误的,你没有权限,你需要登录,服务器关闭,等等。

  2. 如果您得到非2xx响应代码,响应主体中可能会有更多信息。您可以通过打开和读取连接对象的错误流来访问它。

  3. 检查服务器日志。

  4. 尝试使用网络浏览器或类似curlwget的实用程序提交相同的请求。 (将POST自变量放入文件中或将它们附加到URL中。)

  5. 捕获并仔细检查Java程序实际发送的编码POST数据。您可以修改程序在发送之前打印data,或者您可以使用Wireshark(或同等功能)从线路读取请求。一旦你捕获了数据,仔细比较它与HTML规范中关于编码表单数据的内容;请参阅http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4

  6. 最后,您并未在请求中设置内容类型标头。很可能是因为这导致服务器忽略POST数据。阅读HTTP规范了解应该设置的标题的描述。 (在这种情况下,您应该使用由MIME类型“application/x-www-form-urlencoded”和您正在使用的内容编码 - “UTF-8”组成的内容类型;请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17


我就不提了异常的代码示例结束挤压憎恶 ....

哎呀。我只是:-)