问题描述
现在在做一个项目(系统A),是用java+struts1+webLogic写的。PM说有另外一个系统(系统B)要调用我们的系统,让写一个外部的API。协议是Https,方法是servlet(post提交)+json。我简单模拟了A系统(tomcat+servlet),想做的事情是画面上有两个Text框:<input type="text" name="before" /><input type="text" name="after" />在before中输入数字1,然后提交到后台调用service()方法,在方法里将before作为参数去请求调用系统B的接口,接口内容比方是让before+1,再把结果返回到系统A的画面after里。请教各位帮忙搭一下两边的架子:1.用什么方法去请求,请求的路径是什么样的结构2.参数的传递与返回3.接口是怎样定义的以及如何调用在网上查了好久,就是找不到自己需要的。试了下RequestDispatcher,要求请求的地址以“/”为开头,是在一个系统里。而我这2个系统是用的不一样的Web端口,所以感觉RequestDispatcher不能实现。
解决方案
1. 新项目可以采用Apache httpClientDefaultHttpClient httpClient = new DefaultHttpClient();HttpGet getRequest = new HttpGet("https://xxxxxxx");getRequest.addHeader("accept", "application/json"); HttpResponse response = httpClient.execute(getRequest); if (response.getStatusLine().getStatusCode() != 200) {throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());} BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output;System.out.println("Output from Server .... n");while ((output = br.readLine()) != null) {System.out.println(output);}结果是json数据2.采用spring 提供的RestTemplateHttpHeaders headers = new HttpHeaders();headers.setAccept(Arrays.asList(MediaType.APPLICATION_XML));HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);ResponseEntity<String> response = getRestTemplate().exchange(url, HttpMethod.GET, entity, String.class);String responseBody = response.getBody();只用过这两种其他的在想吧
解决方案二:
1、你写接口就行,至于测试直接用浏览器访问你的接口就行,检查返回结果是不是正确。2、struts1 返回json 可以参考http://ipc.iteye.com/blog/705749struts1你估计没问题,有问题的话google搜个例子,返回json格式数据需要json的jar包。3、https 可参考http://flysky7931.iteye.com/blog/305074http://willtea.iteye.com/blog/1941879
解决方案三:
兄弟,你搞复杂了。你现在是要提供一个接口给对方。你只要考虑三步:第一,基本的servlet。相信这个你会的,第二步,json数据解析与处理。servet传数据你会把,接收数据会吧。json数据知道是什么吧。一般接口的处理,肯定是以一定的数据结构作为返回的。即使调用的参数不对,接口都要给出反馈的。所以只要调用接口就要给出反馈。这个在于你业务怎么处理,一些出现的错误也要规划到接口返回中去。你json大概可以这么设计 result:{flag:'ok',data;'',description:''}。 如果返回的类型分类比较多,可以考虑给返回编号,成功返回码是1,其他的都可以具体分个编号,这样调试根据返回编号就可以知道接口调用错误原因了,你看看微信的接口就是这么干的,当然大多数都是这么干的。第三部:了解下webLogic 怎么发布https的servlet。这些都解决了,你的任务也就完成了。有什么问题,私我,谢谢。