`
viproc
  • 浏览: 46360 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java php webservice

    博客分类:
  • php
php 
阅读更多

刚在项目中应用到了java与php通过webservice进行数据交互。觉得挺有意思,贴出来,跟大家分享。

一.java编写webservice服务端,php作为客户端调用.

1.首先我们写一个简单的java类并发布webservice.

package com.php;

import java.util.Map;

/**
* @author yangjuqi
* @createdate 2009-5-18 下午04:43:09
*
*/

public class WebServiceImpl {

public String sendTransact(Map map) throws Exception {
System.out.println("::: Call testModel1 :::");

if(map!=null){
String bugmanifestid = StringUtil.getValue(map.get("bugmanifestid"));
String editedby = StringUtil.getValue(map.get("editedby"));
String dditeddate = StringUtil.getValue(map.get("dditeddate"));
String fullinfo = StringUtil.getValue(map.get("fullinfo"));
String action = StringUtil.getValue(map.get("action"));
System.out.println("bugmanifestid ->" +bugmanifestid);
System.out.println("editedby ->" +editedby);
System.out.println("dditeddate ->" +dditeddate);
System.out.println("fullinfo ->" +fullinfo);
System.out.println("action ->" +action);
}
return "success";
}
}

2.配置server-config.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper" />
<handler name="auth"
type="java:com.php.AuthenticationHandler" />
<handler name="URLLogging"
type="java:com.php.LogHandler">
<parameter name="filename" value="c:\\MyService.log" />
</handler>

<service name="IWebService" provider="java:RPC">
<parameter name="className"
value="com.php.WebServiceImpl" />
<parameter name="allowedMethods" value="*" />
<namespace>http://localhost:8088/testphpweb</namespace>
</service>

<transport name="http">
<requestFlow>
<handler type="URLMapper" />
<handler type="URLLogging" />
</requestFlow>
</transport>

</deployment>

3.发布到jboss后,访问http://localhost:8088/testphpweb/services/IWebService?wsdl能看到xml文件就说明webservice发布好了。

4.写testphpweb.php文件

<?php
/*
* @author juqi yang <yangjuqi@126.com>
* @create date 2009-05-18
*/
header("Content-Type: text/html; charset=GB2312");
echo " ::: PHP CALL JAVA-WEBSERVICE ::: <br>";
require_once("nusoap/lib/nusoap.php");

// 要访问的webservice路径
$NusoapWSDL="http://localhost:8088/testphpweb/services/IWebService?wsdl";

// 生成客户端对象
$client = new soapclient($NusoapWSDL, true);

// 设置参数(注意:PHP只能以'数组集'方式传递参数,如果服务端是java,用Map接收)
$param = array( 'bugmanifestid' => 'E090500001',
'editedby' => '张三',
'dditeddate' => '2009-05-19',
'fullinfo' => '已联系刘德华,筹备今晚吃饭的事,等待回复',
'action' => '0');

echo "begin remote 。。。<br>";
// 调用远程方法
$result = $client->call('sendTransact', array($param));
echo "end remote 。。。<br>";

// 显示执行结果
if (!$err=$client->getError()){
echo '结果 : '.$result;
}else{
echo '错误 : '.$err;
}
?>

5.启动apache,访问http://localhost/service/testphpweb.php

php页面显示:

::: PHP CALL JAVA-WEBSERVICE :::
begin remote 。。。
end remote 。。。
结果 : success

jboss后台监视结果:

17:12:20,781 INFO [STDOUT] ::: Call testModel1 :::
17:12:20,781 INFO [STDOUT] bugmanifestid ->E090500001
17:12:20,781 INFO [STDOUT] editedby ->张三
17:12:20,781 INFO [STDOUT] dditeddate ->2009-05-19
17:12:20,781 INFO [STDOUT] fullinfo ->已联系刘德华,筹备今晚吃饭的事,等待回复
17:12:20,796 INFO [STDOUT] action ->0

到此,php作为客户端调用java写的webservice服务端完成.

二,php编写webservice服务端,java作为客户端调用.

1.编写php webservice

<?php
/*
* @author juqi yang <yangjuqi@126.com>
* @create date 2009-05-18
*/
header("Content-Type: text/html; charset=GB2312");
require_once("nusoap/lib/nusoap.php");

function sendManifest($param)
{

  //把接收到的数据显示出来
return "hello ".$param["projectid"]."<=>".$param["projectname"]."<=>".$param["moduleid"];
}

$server = new nusoap_server();

//配置WSDL namespace
$server->configureWSDL('myservice', //服务名称
'http://localhost/service/web_call_center.php', //tns指定的namespace,一般填写自己的URI
true, //endpoint url or false
'rpc', //服务样式
'http://schemas.xmlsoap.org/soap/http', //传输协议,一直是这个。
'http://localhost/service/web_call_center.php' //wsdl 'types'元素targetNamespace
);

// 注册web服务
$server->register('sendManifest', // 服务
array(
'projectid' => 'xsd:string',
'projectname' => 'xsd:string',
'moduleid' => 'xsd:string',
'modulepath' => 'xsd:string',
'bugtitle' => 'xsd:string',
'bugtype' => 'xsd:string',
'openedby' => 'xsd:string',
'openeddate' => 'xsd:string',
'assignedto' => 'xsd:string',
'assigneddate' => 'xsd:string',
'fixedtime' => 'xsd:string',
'fullinfo' => 'xsd:string',
'bugmanifestid' => 'xsd:string'), // 输入参数;数组,指定类型
array('resultCode' => 'xsd:string'), // 输出;数组,指定类型
'http://localhost/service/web_call_center.php', // namespace of method
'', // soapaction
'rpc', // style
'encoded', // use
'serviceConsumeNotify' // documentation
);

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

2.启动apache后,访问 http://localhost/service/phpserver.php,如果页面如下图所示,表示webservice发布好了。

3.编写java客户端CallPhpServer .java 并调用php webservice

package com.php;

import java.util.HashMap;
import java.util.Map;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/**
* @author yangjuqi
* @createdate 2009-5-18 下午05:31:06
*
*/

public class CallPhpServer {

/**
* 测试方法
* @return
* @throws Exception
*/
public static String callManifest() throws Exception {
System.out.println("0");
Service service = new Service();

Call call = (Call) service.createCall();
System.out.println("1");
call.setTargetEndpointAddress(new java.net.URL("http://localhost/service/phpserver.php"));
call.setOperationName("sendManifest");
System.out.println("2");
Map map=new HashMap();
map.put("projectid", "109");
map.put("projectname", new String("新MM国际物流平台".getBytes(),"iso-8859-1"));
map.put("moduleid", "11");
map.put("modulepath", new String("财务管理".getBytes(),"iso-8859-1"));
map.put("bugtitle", new String("关于总账报表数据的问题".getBytes(),"iso-8859-1"));
map.put("bugtype", "TrackThings");
map.put("openedby", "zhangsan");
map.put("openeddate", "2009-05-31");
map.put("assignedto", "liumang");
map.put("assigneddate", "2009-05-31");
map.put("fixedtime", "2009-06-03");
map.put("fullinfo", new String("现在总账报表页面下的合计数据不对,烦请抓紧事件核实确认更正,谢谢!".getBytes(),"iso-8859-1"));
map.put("bugmanifestid", "E090500001");
call.addParameter("param", org.apache.axis.Constants.SOAP_ARRAY,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
System.out.println("3");
Object obj=call.invoke(new Object[]{map});
return obj.toString();
}
public static void main(String[] args) throws Exception {
System.out.println("::: call php webservice :::");
String str = callManifest();

String result=new String(str.getBytes("iso-8859-1"),"GBK");
System.out.println(result);
}
}
控制台显示结果:

::: call php webservice :::
0
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
1
2
3
hello 109<=>新MM国际物流平台<=>11
到此,java作为客户端调用php的webservice服务端完成.

 

分享到:
评论

相关推荐

    Java调用php的webservice

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

    php调用java写的webservice

    本主题将深入探讨如何使用PHP调用由Java编写的Web服务(Web Service)。Web服务是一种基于网络的、标准化的消息传递机制,允许不同平台的应用程序之间进行交互。PHP作为流行的服务器端脚本语言,与Java结合可以实现...

    phprpc_3.0.2_java,webservice

    这里提到的是Phprpc的3.0.2版本,针对Java平台,并且与Web服务(Webservice)相关。这通常意味着它可能提供了将Java应用程序作为Web服务公开的能力,或者可以与Web服务进行交互。 1. **Phprpc介绍**:Phprpc是一个...

    php调用webservice及myeclipse创建webservice实例

    在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...

    java_webservice_myeclipse.rar

    在“java_webservice_myeclipse.rar”压缩包中,包含了详细的步骤和图解,帮助你理解Web服务在MyEclipse中的实际操作: 1. 项目结构:通常包含src目录(源代码)、WebContent目录(Web应用资源)以及WEB-INF目录...

    PHP WebService实现

    【PHP WebService实现】 在PHP中实现Web Service是一种常见的数据交换技术,允许不同平台的应用程序之间进行通信。本文主要探讨如何使用PHP构建基于SOAP(Simple Object Access Protocol)的Web Service,以及在PHP...

    Android调用Java WebService的实现方法.pdf

    在Android开发中,获取网络上的数据是一种常见需求。...这两者各有优缺点,前者简单易用...但对于需要处理大量数据的大型应用,使用Java、.NET或PHP等开发的Web Service进行网络数据交互,能够提供更大的灵活性和扩展性。

    oracle 调用webservice

    本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...

    WebService服务使用Md5和SHA1加密验证登陆

    在WebService使用Md5和SHA1加密技术对用户密码进行加密处理,从而增加用户安全性。登陆判断同样通过Md5和SHA1加密密码然后和数据库经过加密密码进行比较来(它们可都是二进制滴哦!)验证用户是否存在 很好滴东西 ...

    PHP webservice 接口,服务器端,客户端接口

    自己做的php webservice 接口json格式的 可改成xml格式.提供新手使用,说明文档很详细. 可 java asp.net 安卓 ios 调用php接口 非常简单的webservice接口代码 上手就能用

    php调用Java axis2发布的webservice

    2.1 用java建一个简单的工程sayHi,在里面编写一个简单的服务类sayHi,里面有一个函数sayHello. package Hi; publicclass sayHi { public String sayHello(String user,String weather) { return"Hi "+ user +". It'...

    WebService 短信通讯接口(C#,JAVA,PHP,ASP)

    WEB、VB 、Delphi、.NET、VC 、 JAVA 等多种主流开发语言及 Windows 、Linux 、Unix 等运行环境的短信通讯开发接口WebService具有稳定、跨平台、跨开发语言、穿透防火墙等特点

    PHP调用JAVA的WebService简单实例

    在本文中,我们将探讨如何使用PHP调用由JAVA编写的WebService。这涉及到两个主要部分:服务端(JAVA)和客户端(PHP)。让我们深入了解每个部分。 首先,服务端使用JAVA编程语言,具体是AXIS-1.4作为SOAP(简单对象...

    webservice 第一个小项目

    - 与其他语言的互操作:WebService的一大优势在于跨平台和语言的兼容性,无论是.NET、Python还是PHP,都能与Java编写的WebService进行交互。 通过这个"webservice 第一个小项目",你将能够掌握基本的WebService...

    java+xfire(web service) + php 客户端 并实现文件加密

    标题 "java+xfire(web service) + php 客户端 并实现文件加密" 描述了一个集成项目,其中涉及到Java、XFire(一个基于Java的Web服务实现框架)和PHP的交互,以及文件加密功能。这个项目的目标是构建一个安全的分布式...

    WebService电子书6本(PDF)

    这本书可能关注于特定平台或技术对WebService的支持,例如.NET框架下的WebService开发,或是PHP、Python等其他语言环境下的实现。它可能会解释不同平台的API和库如何简化Web Service的构建和调用过程。 通过这些...

    转 主题:实战WebService I: XML-PRC篇(基于php)

    【标题】:“实战WebService I: XML-RPC篇(基于php)” 在Web服务的世界中,XML-RPC(XML Remote Procedure Call)是一种简单的协议,它允许客户端通过HTTP发送一个XML编码的函数调用到服务器,然后服务器执行这个...

    PHP写的webservice可以供C#调用

    标题中的“PHP写的webservice可以供C#调用”意味着我们正在讨论如何使用PHP创建一个Web服务,这个服务可以通过SOAP协议被C#客户端所调用。Web服务是一种通过网络(通常是HTTP)提供功能的方式,允许不同系统之间的...

    发布webservice并通用对接

    1,webservice的发布方式可以说是五花八门,发布语言有JAVA,.NET,PHP等等 2,如果每一种对接都写特定的代码,那是非常累人的 3,找到通用的对接方式就能一劳永逸,就好比萨尔浒之战中,努尔哈赤“凭尔几路来,我只...

Global site tag (gtag.js) - Google Analytics