- 浏览: 46360 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
xiaopei0714:
能不能请教个问题,我若是想上传文件的时候同时把上传者的名字传过 ...
gwt 上传文件 -
福将1032:
哇 不错 GWT资料很少啊
GWT 2 Spring 3 JPA 2 Hibernate 3.5 教程(译)
刚在项目中应用到了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服务端完成.
发表评论
-
PHP程序调试
2011-06-28 23:31 803级别: 中级 Tyler Anderson ... -
PHP超级配置模块
2011-06-28 23:33 709在Apache之中调用PHP是个 ... -
php.ini 核心配置选项说明
2011-06-28 23:37 768该列表只包含核心的 php.ini 配置选项。扩展的配置选项在 ... -
php配置文件php.ini 中文版
2011-06-28 23:38 874;;;;;;;;;;;;;;;; 简介 ;;;;;;;;;;; ... -
php面试题
2011-06-29 09:16 748简述题(50分) 1、用PHP打印出前一天的时间格式是200 ... -
php 调用webservice
2011-07-06 11:37 730NuSoap是PHP环境下的WebService编程工具,用于 ... -
php 调用 java webservice
2011-07-06 11:45 1109Java中的Webservice方法: public Str ... -
php webservice最常用的方法
2011-07-06 11:54 891文本Tag:PHP 【 ... -
PHP企业级应用之WebService
2011-07-06 11:59 829经典里的PHP气氛还是太差了,都是些简单的应用,我来段企业级应 ... -
php 上传文件转换 pdf
2011-07-16 11:36 978为了实现这个功能在网上已经找了好几天了- - 记下来备 ... -
pdflib及PHP生成pdf文件(文件内容中有中文)
2011-07-16 13:45 2087使用pdflib及PHP生成pdf文件(文件内容中有中文)的方 ... -
jquery + ajax +php 实现上传图片
2011-08-02 11:46 2315当我在这样的形式上传图片的时候 js 文件代码 funct ... -
php jquery之ajax上传文件 ajaxfileupload.js
2011-08-02 13:13 1336在用PHP上传文件时我们只能用$_FILES数组,如果我们只是 ...
相关推荐
### Java调用PHP的Webservice知识点详解 #### 一、Webservice简介 Webservice是一种用于不同应用程序之间进行通信的技术标准,通常使用XML作为数据交换格式。它可以被部署在不同的平台上,并且可以使用不同的编程...
本主题将深入探讨如何使用PHP调用由Java编写的Web服务(Web Service)。Web服务是一种基于网络的、标准化的消息传递机制,允许不同平台的应用程序之间进行交互。PHP作为流行的服务器端脚本语言,与Java结合可以实现...
这里提到的是Phprpc的3.0.2版本,针对Java平台,并且与Web服务(Webservice)相关。这通常意味着它可能提供了将Java应用程序作为Web服务公开的能力,或者可以与Web服务进行交互。 1. **Phprpc介绍**:Phprpc是一个...
在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...
在“java_webservice_myeclipse.rar”压缩包中,包含了详细的步骤和图解,帮助你理解Web服务在MyEclipse中的实际操作: 1. 项目结构:通常包含src目录(源代码)、WebContent目录(Web应用资源)以及WEB-INF目录...
【PHP WebService实现】 在PHP中实现Web Service是一种常见的数据交换技术,允许不同平台的应用程序之间进行通信。本文主要探讨如何使用PHP构建基于SOAP(Simple Object Access Protocol)的Web Service,以及在PHP...
在Android开发中,获取网络上的数据是一种常见需求。...这两者各有优缺点,前者简单易用...但对于需要处理大量数据的大型应用,使用Java、.NET或PHP等开发的Web Service进行网络数据交互,能够提供更大的灵活性和扩展性。
本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...
在WebService使用Md5和SHA1加密技术对用户密码进行加密处理,从而增加用户安全性。登陆判断同样通过Md5和SHA1加密密码然后和数据库经过加密密码进行比较来(它们可都是二进制滴哦!)验证用户是否存在 很好滴东西 ...
自己做的php webservice 接口json格式的 可改成xml格式.提供新手使用,说明文档很详细. 可 java asp.net 安卓 ios 调用php接口 非常简单的webservice接口代码 上手就能用
2.1 用java建一个简单的工程sayHi,在里面编写一个简单的服务类sayHi,里面有一个函数sayHello. package Hi; publicclass sayHi { public String sayHello(String user,String weather) { return"Hi "+ user +". It'...
WEB、VB 、Delphi、.NET、VC 、 JAVA 等多种主流开发语言及 Windows 、Linux 、Unix 等运行环境的短信通讯开发接口WebService具有稳定、跨平台、跨开发语言、穿透防火墙等特点
在本文中,我们将探讨如何使用PHP调用由JAVA编写的WebService。这涉及到两个主要部分:服务端(JAVA)和客户端(PHP)。让我们深入了解每个部分。 首先,服务端使用JAVA编程语言,具体是AXIS-1.4作为SOAP(简单对象...
- 与其他语言的互操作:WebService的一大优势在于跨平台和语言的兼容性,无论是.NET、Python还是PHP,都能与Java编写的WebService进行交互。 通过这个"webservice 第一个小项目",你将能够掌握基本的WebService...
标题 "java+xfire(web service) + php 客户端 并实现文件加密" 描述了一个集成项目,其中涉及到Java、XFire(一个基于Java的Web服务实现框架)和PHP的交互,以及文件加密功能。这个项目的目标是构建一个安全的分布式...
这本书可能关注于特定平台或技术对WebService的支持,例如.NET框架下的WebService开发,或是PHP、Python等其他语言环境下的实现。它可能会解释不同平台的API和库如何简化Web Service的构建和调用过程。 通过这些...
【标题】:“实战WebService I: XML-RPC篇(基于php)” 在Web服务的世界中,XML-RPC(XML Remote Procedure Call)是一种简单的协议,它允许客户端通过HTTP发送一个XML编码的函数调用到服务器,然后服务器执行这个...
标题中的“PHP写的webservice可以供C#调用”意味着我们正在讨论如何使用PHP创建一个Web服务,这个服务可以通过SOAP协议被C#客户端所调用。Web服务是一种通过网络(通常是HTTP)提供功能的方式,允许不同系统之间的...
1,webservice的发布方式可以说是五花八门,发布语言有JAVA,.NET,PHP等等 2,如果每一种对接都写特定的代码,那是非常累人的 3,找到通用的对接方式就能一劳永逸,就好比萨尔浒之战中,努尔哈赤“凭尔几路来,我只...