处理WebService asmx的经验

项目的需求,需要和一个.net系统进行数据交换,合作方提供了一个WebService接口。这个与一般的PHP POST或GET传值再查库拿数据的思路有点不一样,需要用到SOAP模块,处理方法也很简单,就是有一些需要注意的事情。

首先确认你的PHP.ini开启了.SOAP,就是 extension=php_soap.dll 这前面的分号去咯。

代码很简单:句容市鄂茂钢铁

<?php

$client = new SoapClient(‘http://www.nowamagic.net/SearchService.asmx?WSDL‘);

$client->soap_defencoding = ‘utf-8‘;
$client->decode_utf8 = false;
$client->xml_encoding = ‘utf-8‘; 

$param = array(‘param1‘=>‘01‘, ‘param2‘=>‘02‘);

//$param["param1"]="01";
//$param["param2"]="02";

//$result = $client->__soapCall("GetArticle", array( $param ));
$result = $client->__Call("GetArticle", array( $param ));

if (is_soap_fault($result))
{
    trigger_error("SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})", E_USER_ERROR);
}
else
{
    $data = $result->GetArticleResult;	//这里返回的是类,必须使用->得到元素的值
    print_r($data);
}
?>

需要注意的一点是,参数是数组外再包一层数组,就是 array( array() )

附SOAP接口的一些参数:

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /SearchService.asmx HTTP/1.1
Host: 202.105.183.61
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetTrafficViolationInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetArticle xmlns="http://tempuri.org/">
      <param1>string</param1>
      <param2>string</param2>
    </GetArticle>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetArticleResponse xmlns="http://tempuri.org/">
      <GetArticleResult>string</GetArticleResult>
    </GetArticleResponse>
  </soap:Body>
</soap:Envelope>
时间: 2024-10-10 06:43:34

处理WebService asmx的经验的相关文章

php 如何利用 soap调用.Net的WebService asmx文件

原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各种探索, 相关的PHP调用webservice的过程如下: 1.打开php相关扩展: 找到配置文件php.ini 文件, 打开以下扩展 extension = php_soap.dllextension = php_curl.dllextension = php_openssl.dll 2.php代

AjaxControlToolkit.dll+WebService.asmx实现自动完成

每用一个组件,就得知道它从哪里来.它有什么优点和不足,能为我们解决什么问题.这些问题官网网站几乎都说的很详细了,所以我们想知道结果直接上去看看就好了. Address: http://www.ajaxtoolkit.net/ Download:http://ajaxcontroltoolkit.codeplex.com/releases/view/11121 在上述地址现在后解压里面有个SampleWebSite文件夹打开找到Bin文件里面就是AjaxControlToolkit.dll,根据需

Java调用Webservice(asmx)的几个例子

2009-06-28 17:07 写了几个调用例子: 1. import org.apache.axis.client.*;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import javax.xml.namespace.QName;import javax.xml.rpc.ParameterMode;import javax.xml.rpc.JAXRPCException;import jav

WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式

1:首先WebService方法定义,每个方法定义两个参数,一个用于验证权限,string格式的XML文本用于传输数据.最终目的实现,WebService方法,验证权限,获取XML数据,处理之后返回XML数据.一下面一段代码为例进行说明: [WebMethodAttribute(Description = "新增督学计划")] public string InspectorPlan_Add(string Token, string XMLParas) { try { //安全凭证检查

webservice asmx 无法序列化接口 System.Collections.Generic.IList

转载自:http://www.cnblogs.com/chenhuzi/p/4178194.html 今天有位同事在方法里加了一个IList<entity> 的返回值,也没有测试,直接发布,导致了如下错误. NotSupportedException: 无法序列化接口 System.Collections.Generic.IList InvalidOperationException: 反射“entity”时出错. InvalidOperationException: 无法反射方法 metho

Jquery Ajax 跨域调用asmx类型 WebService范例

摘要:Ajax 在 Web 2.0 时代起着非常重要的作用,然而有时因为同源策略(SOP)(俗称:跨域问题(cross domain)) 它的作用会受到限制.在本文中,将学习如何克服合作限制.本文以asmx方式搭建webservice作为测试用后端,给出完整的前后端调用解决方案.范例代码. 关键词: jquery ajax 跨域  webservice  asmx  cross-domain 0 问题分析 0.1 什么是跨域问题? 越来越多的网站需要相互协作.例如,在线房屋租赁网站需要谷歌地图的

asp.net WebService+Ajax调用

default.aspx 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head run

WCF探索之旅(五)——WCF与WebService的异同

前几篇文章我们简单的介绍了WCF以及如何使用它,今天我们来讨论一下WCF和WebService的异同. 相信大多数同学跟我一样,对于WebService有所了解,而且应该说你是先听说WebService,后听说还有个WCF的,对不对?那好,我们今天来一起看看,这两者有何不同. WebService是标准,是一种规范.严格来说WebService是一种行业标准,不是一种特定的技术.而WCF是一种WebService的实现.在WCF之前,微软系列中有ASP.NET Web Service,后来微软做

WebService和AngularJS实现模糊过滤查询

[概要] 网上看到一个不错的帖子,用WebService获取json,然后在前端使用AngularJs进行过滤搜索,看完文章后,按自己的想法,写了一个demo,给大家讨论参考,本人技术一般,还望大家多加指点. [术语] WebService:是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序 AngularJS:通过为开发者呈现一个更高层次的抽象来简