2013-08-22 153 views
0

我正在使用HttpPost进行简单的客户端服务器通信。从客户端我设置一个参数(文件名)。Servlet request.getParameter()总是返回空值

在服务器端,当我尝试获取参数值时,它总是显示null。我尝试使用MultiPartEntity,但即使这是行不通的。

下面是我的客户端代码:

  HttpPost httppost = new HttpPost("http://xxx.xxx.xxx.xxx:yyyy"); 
      InputStreamEntity reqEntity = new InputStreamEntity(
        new FileInputStream(dataFile), -1); 
      reqEntity.setContentType("binary/octet-stream"); 

      // Send in multiple parts if needed 
      reqEntity.setChunked(true); 
      httppost.setEntity(reqEntity); 

      //setting the parameter 
      httppost.getParams().setParameter("filename", "xxxx.xml"); 
      HttpResponse response = httpclient.execute(httppost); 
      int respcode = response.getStatusLine().getStatusCode(); 

这是我的servlet代码:

response.setContentType("binary/octet-stream"); 
    Scanner scanner = new Scanner(request.getInputStream()); 

    // reading the parameter 
    String filename = request.getParameter("filename"); 
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("C:\\" + filename))); 

请让我知道这个问题的任何可能的解决方案。

在此先感谢!

回答

-1

乌尔设置参数错误......在客户端,这样做:

ArrayList<NameValuePair> postParameters = postParameters = new ArrayList<NameValuePair>(); 
postParameters.add(new BasicNameValuePair("filename", "xxxx.xml"); 
httppost.setEntity(new UrlEncodedFormEntity(postParameters)); 
HttpResponse response = httpclient.execute(httppost); 
+0

感谢您的答复。我已经设置了reqEntity,httppost.setEntity(reqEntity);如果我现在遵循你的逻辑,我没有在文件中写入源数据。是否可以设置多个实体? –

+0

你可以实现这两个请求。首先在回答中设置并执行上面提到的文件名。在读取输入流之前在servlet中接收它并在第二个请求中发送ur流 – Jazib