用SSH框架写了一个微信项目,因为要和别的项目对接接口,本来想用WebService来实现,后来看到别的框架里面直接通过Actio来实现对接,所以就想到了用Action作为接口来实现WebService功能,通过HTTP来调用。代码如下。
Action代码:
public String testService() throws IOException, ClassNotFoundException{
//创建request和response对象
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request=ServletActionContext.getRequest();
//设置response编码
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
//创建writer实例
PrintWriter out = null;
out = response.getWriter();
//gson 用于把map转为JSON
Gson gs = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
//通过request获取传过来的参数,然后解析数据流获取参数
int length = (int) request.getContentLength();// 获取长度
InputStream is = request.getInputStream();
if (length != -1) {
byte[] data = new byte[length];
byte[] temp = new byte[512];
int readLen = 0;
int destPos = 0;
while ((readLen = is.read(temp)) > 0) {
System.arraycopy(temp, 0, data, destPos, readLen);
destPos += readLen;
}
//获取的参数
String result = new String(data, "UTF-8"); // utf-8编码
System.out.println(result);
}
//把要返回的参数写入map,转成JSON
Map map = new HashMap();
map.put("ID","123");
map.put("success", "true");
String jsonmap = gs.toJson(map);
out.print(jsonmap);
return null;
}
通过HTTP调用的代码:
public static void main(String[] args)
throws IOException, JSONException
{
//实例gson用于转换
Gson gs = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
//参数
Map map = new HashMap();
map.put("ID", "123123");
String jsonmap = gs.toJson(map);
String str = null;
//通过HTTPPost方式
try {
str = HttpsPost.send("http://localhost:8080/wx_manager/weixin/business_testService.do", "POST", jsonmap);
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println(str);
以上是Action和调用Action的方法,因为是我写的一个小demo,所以没有真实的数据。
通过执行main方法返回了:
{ "ID": "123", "success": "true"} 这个就是我在Action里定义的返回数据了。
下面在把HTTP调用的方法代码贴出来:
public static String send(String urlString, String method,
String parameters)
throws IOException {
HttpURLConnection urlConnection = null;
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(method);
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setRequestProperty("content-type", "text/html;charset=utf-8");
urlConnection.getOutputStream().write(parameters.getBytes("UTF-8"));
urlConnection.getOutputStream().flush();
urlConnection.getOutputStream().close();
//读取返回的流
InputStream input=urlConnection.getInputStream();
InputStreamReader inpurread=new InputStreamReader(input,"utf-8");
BufferedReader br=new BufferedReader(inpurread);
String a;
StringBuffer s=new StringBuffer();
while ((a=br.readLine())!=null) {
s.append(a);
}
return s.toString();
}
以上就是完整的通过HTTP的方式返回action了。通过这样的方式也可以实现webService的功能了。不过需要在Struts的配置文件里,把改action设置为不拦截,不然Action会拦截。
分享到:
相关推荐
通过以上知识点的学习和实践,你可以掌握如何使用Java调用SOAP接口,以及如何根据具体需求进行定制。在处理天气信息这样的案例中,理解SOAP协议和相关API的使用,将使你能够轻松地与各种Web服务进行交互。
首先,Java Web服务(WEBSERVICE)是基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议的网络服务,它允许远程系统通过HTTP等标准网络协议进行通信。Java提供了多种框架来...
标题"MFC调用Java的Action"涉及到的是在Microsoft Foundation Classes (MFC)环境中与Java进行交互的技术。MFC是微软提供的一套C++类库,用于简化Windows应用程序开发。而Java是一种跨平台的编程语言,广泛应用于...
本文将深入探讨“Java与C#相互调用的全新方式”,结合给定的标签“源码”和“工具”,我们将重点讨论如何通过中间件或接口实现这种交互,并提供一种可能的解决方案——AMFCall。 Java和C#的互操作性通常通过以下几...
在JSP中,我们可以通过标签库(Tag Library)如JSTL(JavaServer Pages Standard Tag Library)来处理表单数据和调用Action。例如,我们可以使用`<c:choose>`、`<c:when>`等标签进行条件判断,决定调用哪个Action。 ...
本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...
这种需求可以通过多种方式实现,其中一种较为常见的做法是利用中间JSP页面来间接调用Action,从而达到自动加载数据的目的。 #### 二、原理及实现步骤 ##### 2.1 原理介绍 在Struts框架中,通常通过配置文件...
标题中的“Flex与Java交互 远程调用方式”指的是在Adobe Flex应用程序中与Java后端进行通信的技术。Flex是一种基于ActionScript的开源框架,用于构建富互联网应用程序(RIA),而Java是后端开发的常用语言。两者之间...
java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)
Oozie支持多种类型的Hadoop任务,包括MapReduce、Pig、Hive、Sqoop等,同时也支持通过Java Action执行自定义的Java程序。 **JavaAction**是Oozie提供的一个特殊功能,允许用户编写Java程序来实现自定义逻辑,这些...
本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...
### Java调用asmx(WebService)的关键知识点 ...通过以上介绍,我们可以了解到使用Java调用ASMX类型的WebService涉及到的关键技术和步骤。理解这些内容对于实现不同系统之间的交互至关重要。希望本文能对读者有所帮助。
Java远程调用工具是开发过程中不可或缺的利器,尤其在处理分布式系统和服务之间的交互时。本文将深入探讨如何利用Java技术进行远程调用,特别是针对WebService和RESTful接口的调用,以及一个常用的工具——SoapUI。 ...
总结来说,Flex调用Java方法的关键在于使用Blazeds提供的Remoting服务,通过AMF(Action Message Format)通道,实现Flex客户端与Java服务器之间的高效双向通信。在Java端创建可序列化的实体类和业务处理类,同时在...
### Java调用PHP的Webservice知识点详解 #### 一、Webservice简介 Webservice是一种用于不同应用程序之间进行通信的技术标准,通常使用XML作为数据交换格式。它可以被部署在不同的平台上,并且可以使用不同的编程...
本文将深入探讨如何使用Axis2来动态地调用Web Service,并通过分析`WebServiceInvoker.java`这个文件来理解其实现原理。 1. **Java动态调用Web Service**: 在Java中,动态调用Web Service主要涉及到JAX-WS(Java ...
总之,Java调用浏览器打开URL地址主要依赖于`java.awt.Desktop`类的`browse()`方法,这是一种跨平台且易于使用的解决方案。如果需要更精细的控制,可以考虑使用特定浏览器的命令行接口。在实际开发中,确保对各种...
"java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 一、创建存储过程 在 DB2 中,创建存储过程需要使用 CREATE PROCEDURE 语句。例如,创建一个无参存储过程...
WebService客户端调用WebService服务示例代码,java代码,纯手工,包括直接httpClient直接发送Saop报文调用和利用wsimport -keep 生成客户端代码后调用两种方式的示例。因涉及商务账户密码隐私,因此代码中的有些账号...
Java调用.NET WebService是跨平台通信的一种常见方式,尤其在企业级应用中,不同技术栈的应用需要相互交互数据时,这种技术尤为实用。Apache Axis是Java中常用的用于调用Web服务的工具,它提供了方便的API来创建和...