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

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接口案例

    1,利用java调用soap接口获取天气的信息;2,利用java调用soap一个特定的案例,可按自己的要求修改。

    PB调用JAVA WEBSERVICE实例

    JAVA WEBSERVICE 建的实例工程,给PB调用, 因VS建的 WEBSERVICE PB很难调用,所以用JAVA的axis做了个小实例 共大家参考

    MFC调用Java的Action

    http://blog.csdn.net/c20061924/article/details/52293455

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

    封装了java调用.net的websevice接口,解决了soapaction报错和server not identified错误,使用soap1.1协议。

    Java调用php的webservice

    Java调用php的webservice: header("Content-Type:text/html;charset=UTF-8"); // require('lib/nusoap.php'); require_once("lib/nusoap.php"); $server = new soap_server(); $server->configureWSDL('...

    javatwain 使用扫描仪

    本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...

    Oozie之JavaAction测试实例

    使用oozie的流程,以javaAction为例 该实例可以编写自己的Main函数,通过参数传递给oozie,并可以获取oozie的输出,作为action的下一步判断。

    .NET 访问JAVA的WEBSERVICE使用SOAP头

    .NET 访问JAVA的WEBSERVICE使用SOAP头

    WEB调用扫描仪完全功能本地版

    本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...

    lr脚本java协议调用post/get请求并验证响应信息

    2、在LR中选择java协议的工程,然后再action部分调用如下; import postAndGet_result.java 事务开始 public static void main(String[] args) { //发送 GET 请求 String s=postAndGet_result.sendGet(...

    java-filter.zip_Action!

    1、拦截器是基于java的反射机制的,而过滤器是基于函数回调 2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 ...5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

    上课日记学习java

    (3)拦截器会调用Action 对象的setXxx() 方法, 把此次请求参数注入给Action对象; (~3)校验 调用vilidateXxx()方法; (4)请求参数注入完成后,框架会调用Action执行方法(如: execute方法 等),次方法中可以调用service...

    java命名规范 开发规范

    c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联...

    从Java走向Java+EE+.rar

    第17章 JNDI和Java RMI远程调用 249 17.1 用Java RMI实现远程调用 250 17.2 利用JNDI定位资源 256 17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265...

    wsdl2java源码-module-web-service:Java调用WebService的几种方式

    Java调用WebService的几种方式 Constants 常量 // WebService俩个参数,帐号跟密码 private static final String USERNAME = "void"; private static final String PASSWORD = "password"; // namespace工作空间 ...

    泛微ecology 8的java action webservice、定时任务、jquery开发的demo,前端后端完整项目

    这是一个精品、经典项目,可以适用于快速二次开发,方便对接企业...流程提交前执行自定义java action 计划任务 CronJob webservice建立和调用 前端控件说明 直接使用 eclipse或IDEA导入直接可使用 全开源、请放心下载

    Action Request System 7.6.03 安装指南

    BMC Action Request System 7.6.03 安装指南

    java 编程入门思考

    13.13 action的替用品 13.14 程序片的局限 13.14.1 程序片的优点 13.15 视窗化应用 13.15.1 菜单 13.15.2 对话框 13.16 新型AWT 13.16.1 新的事件模型 13.16.2 事件和接收者类型 13.16.3 用Java 1.1 AWT制作窗口和...

    代码自动生成工具(vb类 java类 sql存储过程...)

    通过调用数据库连接对话框建立数据库连接 (目前测试支持 MSSQL, Oracle, Access, MySql) 根据自定义模板通过数据库表、视图和存储过程批量生成代码, 模板编辑和代码查看支持语法高亮 (Java, VB, T-SQL) 可以...

    Java通用代码生成实用程序XDoclet(源码包)

    import org.apache.struts.action.ActionForward; /** * * @author yangjuqi 2007-06-13 * @struts.action name="biddingForm" path="/carriageBidQuery" validate="false" * @struts.action-forward name=...

Global site tag (gtag.js) - Google Analytics