`
u010214413
  • 浏览: 41746 次
社区版块
存档分类
最新评论

java 通过HTTP的方式调用Action

    博客分类:
  • IT
阅读更多
用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接口案例

    通过以上知识点的学习和实践,你可以掌握如何使用Java调用SOAP接口,以及如何根据具体需求进行定制。在处理天气信息这样的案例中,理解SOAP协议和相关API的使用,将使你能够轻松地与各种Web服务进行交互。

    PB调用JAVA WEBSERVICE实例

    首先,Java Web服务(WEBSERVICE)是基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议的网络服务,它允许远程系统通过HTTP等标准网络协议进行通信。Java提供了多种框架来...

    MFC调用Java的Action

    标题"MFC调用Java的Action"涉及到的是在Microsoft Foundation Classes (MFC)环境中与Java进行交互的技术。MFC是微软提供的一套C++类库,用于简化Windows应用程序开发。而Java是一种跨平台的编程语言,广泛应用于...

    java C#相互调用的全新方式

    本文将深入探讨“Java与C#相互调用的全新方式”,结合给定的标签“源码”和“工具”,我们将重点讨论如何通过中间件或接口实现这种交互,并提供一种可能的解决方案——AMFCall。 Java和C#的互操作性通常通过以下几...

    通过表单提交实现调用不同的action方法

    在JSP中,我们可以通过标签库(Tag Library)如JSTL(JavaServer Pages Standard Tag Library)来处理表单数据和调用Action。例如,我们可以使用`<c:choose>`、`<c:when>`等标签进行条件判断,决定调用哪个Action。 ...

    java调用.net发布的webservice(asmx)

    本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...

    jsp自动调用action

    这种需求可以通过多种方式实现,其中一种较为常见的做法是利用中间JSP页面来间接调用Action,从而达到自动加载数据的目的。 #### 二、原理及实现步骤 ##### 2.1 原理介绍 在Struts框架中,通常通过配置文件...

    Flex与java交互 远程调用方式

    标题中的“Flex与Java交互 远程调用方式”指的是在Adobe Flex应用程序中与Java后端进行通信的技术。Flex是一种基于ActionScript的开源框架,用于构建富互联网应用程序(RIA),而Java是后端开发的常用语言。两者之间...

    java调用C#封装的dll(jna,com)

    java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)

    Oozie之JavaAction测试实例

    Oozie支持多种类型的Hadoop任务,包括MapReduce、Pig、Hive、Sqoop等,同时也支持通过Java Action执行自定义的Java程序。 **JavaAction**是Oozie提供的一个特殊功能,允许用户编写Java程序来实现自定义逻辑,这些...

    Java调用WebService接口的方法

    本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...

    Java调用asmx(WebService)

    ### Java调用asmx(WebService)的关键知识点 ...通过以上介绍,我们可以了解到使用Java调用ASMX类型的WebService涉及到的关键技术和步骤。理解这些内容对于实现不同系统之间的交互至关重要。希望本文能对读者有所帮助。

    java 远程调用工具

    Java远程调用工具是开发过程中不可或缺的利器,尤其在处理分布式系统和服务之间的交互时。本文将深入探讨如何利用Java技术进行远程调用,特别是针对WebService和RESTful接口的调用,以及一个常用的工具——SoapUI。 ...

    flex调用java方法.pdf

    总结来说,Flex调用Java方法的关键在于使用Blazeds提供的Remoting服务,通过AMF(Action Message Format)通道,实现Flex客户端与Java服务器之间的高效双向通信。在Java端创建可序列化的实体类和业务处理类,同时在...

    Java调用php的webservice

    ### Java调用PHP的Webservice知识点详解 #### 一、Webservice简介 Webservice是一种用于不同应用程序之间进行通信的技术标准,通常使用XML作为数据交换格式。它可以被部署在不同的平台上,并且可以使用不同的编程...

    Java动态调用webService,axis2动态调用webService

    本文将深入探讨如何使用Axis2来动态地调用Web Service,并通过分析`WebServiceInvoker.java`这个文件来理解其实现原理。 1. **Java动态调用Web Service**: 在Java中,动态调用Web Service主要涉及到JAX-WS(Java ...

    Java调用浏览器打开URL地址

    总之,Java调用浏览器打开URL地址主要依赖于`java.awt.Desktop`类的`browse()`方法,这是一种跨平台且易于使用的解决方案。如果需要更精细的控制,可以考虑使用特定浏览器的命令行接口。在实际开发中,确保对各种...

    java 调用db2存储过程

    "java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 一、创建存储过程 在 DB2 中,创建存储过程需要使用 CREATE PROCEDURE 语句。例如,创建一个无参存储过程...

    WebService客户端调用WebService服务示例代码——java

    WebService客户端调用WebService服务示例代码,java代码,纯手工,包括直接httpClient直接发送Saop报文调用和利用wsimport -keep 生成客户端代码后调用两种方式的示例。因涉及商务账户密码隐私,因此代码中的有些账号...

    java调用.net webservice实例

    Java调用.NET WebService是跨平台通信的一种常见方式,尤其在企业级应用中,不同技术栈的应用需要相互交互数据时,这种技术尤为实用。Apache Axis是Java中常用的用于调用Web服务的工具,它提供了方便的API来创建和...

Global site tag (gtag.js) - Google Analytics