浏览 7605 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-15
在做完解析过程和存数据库后,想自己测试一下,所以就想到了通过JDK的HttpURLConnection向自己的Action发送一个用于测试的XML格式的字符流,然后就出现了以下的代码 public class TestClientRegist extends TestCase { public void testRegist(){ try{ // 用于测试,读的自己本地的XML文件 FileInputStream input = new FileInputStream(new File("regist.xml")); // Action地址 URL url = new URL("http://localhost:8080/fstm/rmi/client/regist.do"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); byte[] b = new byte[1024]; int l = 0; OutputStream out = conn.getOutputStream(); out.write("data=".getBytes()); while((l = input.read(b, 0, b.length)) != -1){ out.write(b, 0, l); } out.close(); InputStream in = conn.getInputStream(); in.close(); }catch(Exception ex){ ex.printStackTrace(); } } } 这些代码是没问题的啦。但没用过这东西,刚开始出了好多问题。 1,第一次在下面没有获取“输入流”,发现没执行时没有反应,Action那边也没有调用 加上以后就好了。问了个“高人”才明白,这里需要建立一次连接,当执行完输出流后。还要接收HTTP的响应。还遇到一些别的问题就不在罗嗦了~~~~大家有什么问题可以来多讨论讨论。 有什么高见请赐教。一定认真接受。 下面在给出Action接收的代码 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { InputStream in = request.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); StringBuffer data = new StringBuffer(); String line = null; while((line = br.readLine()) != null){ data.append(line); } logger.debug(data); clientMgr.doRegistManager(data.toString()); // 设置返回状态 response.setStatus(HttpServletResponse.SC_OK); } catch (Exception ex) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); logger.warn("", ex); } return null; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-15
HttpClient或者XmlRpc可以更好的实现
|
|
返回顶楼 | |
发表时间:2008-08-17
我也遇到了同样的问题,和asp的程序进行一次交互,我先发送XML字节流,然后他们给出响应,而且他们规定了发送字节的大小,并且发送后我还需要再接受一次他们的XML字节流,这个问题经常抛出异常,而且每次查看日志的时候我就烦,都是TIMEOUT或者500的错误,让人很郁闷,不知道有没又其他技术能解决这个问题
我在网上搜了N久,就那么几篇写这个的文章 |
|
返回顶楼 | |
发表时间:2008-08-17
用DOTNET发数据给STRUTS,无需再弄什么协议,直接用HTTP协议承载数据不更好吗。直接用WebRequest发送数据就行。STRUTS中只管按正常的方式读取数据就行。
|
|
返回顶楼 | |