2012-11-12 25 views
1

我有一个HTTP处理程序定位在:邮政查询字符串直接到的HttpHandler被Java

http://localhost:8118/log.srv 

当我贴在IE这个URL,它的工作。

http://localhost:8118/log.srv?action=likearticle&noname=989858&ladoi=cutymaraton 

http处理程序获取数据。

但是,当我使用Java程序来发布数据,没有发生错误,但是,http处理程序没有得到任何数据。 我的java程序:

public static void main(String[] args) { 
     try { 
      for(int i=1; i<1000; i++){ 
       URL url= new URL("http://localhost:8118/log.srv"); 
       URLConnection conn = url.openConnection(); 
       conn.setDoOutput(true); 
       OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 
       String data = "action=likearticle&noname=989858&ladoi=cutymaraton"+i; 
       System.out.println(data); 
       writer.write(data); 
       writer.flush(); 
      } 

      System.out.println("Done"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

我用另一个代码:

String urlParameters = "action=likearticle&noname=989858&ladoi=cutymaraton"; 
      String request = "http://localhost:8118/log.srv"; 
      URL url = new URL(request); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();   
      connection.setDoOutput(true); 
      connection.setDoInput(true); 
      connection.setInstanceFollowRedirects(false); 
      connection.setRequestMethod("POST"); 
      connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
      connection.setRequestProperty("charset", "utf-8"); 
      connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); 
      connection.setUseCaches (false); 

      DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
      wr.writeBytes(urlParameters); 
      wr.flush(); 
      wr.close(); 
      connection.disconnect(); 

没有错误,但没有成功发送数据。 告诉我为什么?和任何解决方案?

+0

你为什么不加参数的查询参数,如您在浏览器? – 2012-11-12 10:32:56

+0

@Tichodroma:如何做到这一点? – Sonrobby

回答

1

可以使用more friendly API,像这样:

PostMethod post = new PostMethod("http://localhost:8118/log.srv"); 
post.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded"); 
NameValuePair[] data = { 
    new NameValuePair("action", "likearticle"), 
    new NameValuePair("noname", "989858"), 
    new NameValuePair("ladoi", "cutymaraton") 
}; 
post.setRequestBody(data);  

HttpClient httpclient = new HttpClient(); 
int result = httpclient.executeMethod(post); 

InputStream in = post.getResponseBodyAsStream(); 
// handle response. 
0

使用查询参数创建URL。

URL url= new URL("http://localhost:8118/log.srv?action=likearticle&noname=989858&ladoi=cutymaraton"+i); 
+0

yeb,我用:'URL url1 = new URL(“http://10.5.5.71:8118/log.srv?action=likearticle&noname=989858&ladoi=cutymaraton”); \t \t \t url1.openConnection();'但没有完成。 – Sonrobby

相关问题