webservice实例,webservice实现

http://www.itjxue.com  2023-01-16 10:18  来源:未知  点击次数: 

一道简单的webservice编程

if (TextBox1.Text!= "")

{

TextBox2.Text = WebserviceInstance.change1(double.Parse(TextBox1.Text.Trim())).ToString();

}

if (TextBox3.Text != "")

{

TextBox4.Text = WebserviceInstance.change2(double.Parse(TextBox3.Text.Trim())).ToString();

}

}

试下

如何调用webservice接口中的方法

webservice主要是一些站点为我们写好了的方法,供我们调用,当然我们也可以自己去编写自己的webservice,本文主要是通过一个小的实例,去如何调用webservice。下面先给出几个常用的webservice的调用地址。

下面我们就拿一个简单的天气预报接口。先把天气预报接口的地址输入地址栏:会出现一些带有链接的方法名和参数说明之类的。看完之后,然后进链接可以看到测试,可以先把我们想测试的参数写进去,点击调用,会出现一个xml文件,这些就是得到的结果,依情况而定我们出把结果处理成我们想要的就可以了。

下面说一下怎么在项目中调用:新建一个web项目,然后点击添加引用服务如图,然后点击确定。

这样就会发现在webconfig文件里面多了一下节点,而且项目类中的Service References文件件多了一个绿色的东西。可以点击看看他有哪些方法,应该是和我们在浏览器输入链接的方法是一致的,剩余就是怎么调用了。下面给出具体的代码:本代码值在webForm中先添加Lable、TextBox、Button以及Literal各一个。然后点击按钮。

运行程序,输入查看的城市:点击按钮如图所示:

C#使用PHP服务端的Web Service通信实例

这篇文章主要介绍了C#使用PHP服务端的Web

Service通信实例,需要的朋友可以参考下

注:本例中构建Web

Service采用SOAP方式,通过php插件NuSoap来搭建SOAP服务器

代码如下:

?

require_once("lib/nusoap.php");

//调用NuSoap

$server

=

new

soap_server();

//创建soap服务端

$server-configureWSDL("login_service");

//配置WSDL

$namespace

=

"";

$server-wsdl-schemaTargetNamespace

=

$namespace;

//设置wsdl命名空间为

$server-register(

//

注册Web服务

'login_verifiy',

//定义名称

array('name'='xsd:string','pw'='xsd:string'),

//接受参数

array('return'='xsd:string'),

//返回

$namespace,

//命名空间

false,

//

soapaction:默认

'rpc',

//

类型:

rpc

or

document

'encoded',

//

参数:encoded(编码)或

literal(文字)

'A

web

method

of

login'

//描述

);

$POST_DATA

=

isset($GLOBALS['HTTP_RAW_POST_DATA'])?

$GLOBALS['HTTP_RAW_POST_DATA']

:

'';

$server-service($POST_DATA);

//将提交的数据传递给soap服务

function

login_verifiy($user,$pw)

{

//服务执行内容,本示例中为显示输入的帐号密码

return

'user:'.$user.'

password:'.$pw);

}

?

C#客户端调用:

代码如下:

[DllImport("kernel32")]

//调用api函数读ini文件。返回值为字符串缓冲区的长度

private

static

extern

long

GetPrivateProfileString(string

section,

string

key,

string

def,

StringBuilder

retVal,

int

size,

string

filePath);

private

void

Form1_Load(object

sender,

EventArgs

e)

{

StringBuilder

temp

=

new

StringBuilder(256);

GetPrivateProfileString("system",

"url",

null,

temp,

256,

System.IO.Directory.GetCurrentDirectory()+"config.ini");

//通过读取config.ini配置文件(结构见附加内容)来获取webservice

url

Program.server_url

=

temp.ToString();

//Program.cs中的全局变量server_url用以储存webservice

url

}

private

void

button1_Click(object

sender,

EventArgs

e)

{

WebReference.login_service

l

=

new

WebReference.login_service();

string

s=l.login_verifiy(username.Text,

password.Text);

MessageBox.Show(s);

}

附config.ini内容:

代码如下:

[system]

url=

如何使用C#创建WebService

C#学习到一定程度会涉及到C#创建WebService的一些高阶知识,本文试图对此做一个简单的介绍。

假设A是客户端,B是webservice服务端,用户通过http协议向服务器发送soap请求,webservice返回客户端Xml格式的数据。

现在我们看一看创建一个C#创建WebService的大致过程:

服务端的webservice是必须要建的。中间的soap,Xml我们不用去关心,在客户端这边,比较重要的是如何从webservice取得对象?答案是用的是proxy对象。客户端由代理对象(proxy)负责与webservice的通信。所以在客户端使用webservice,完全和使用一个本地对象是一样的。

我们现在以一个简单的C#创建WebService实例来说明。

打开vs.Net,新建工程(asp.Net ?web服务),在位置中键入http。//localhost/webserver,其中webserver就是工程的名字。确定后,出现一个Service1.asmx.cx,双击,出现代码窗口,

using ?System; ? using ?System.Collections; ? using ?System.ComponentModel; ? using ?System.Data; ? using ?System.Diagnostics; ? using ?System.Web; ? using ?System.Web.Services; ? namespace ?webserver ? { ? /// ? ? /// ?Service1 ?的摘要说明。 ? /// ? ? (1) ? public ?class ?Service1 ?: ? ?System.Web.Services.WebService ? { ? public ?Service1() ? { ? //CODEGEN:该调用是 ?ASP.Net ?Web ? ?服务设计器所必需的 ? InitializeComponent(); ? } ? #region ?Component ?Designer ?generated ?code ? //Web ?服务设计器所必需的 ? private ?IContainer ?components ?= ?null; ? /// ? ? /// ?设计器支持所需的方法 ?- ? ?不要使用代码编辑器修改 ? /// ?此方法的内容。 ? /// ? ? private ?void ?InitializeComponent() ? { ? } ? /// ? ? /// ?清理所有正在使用的资源。 ? /// ? ? protected ?override ?void ?Dispose ?( ?bool ?disposing ?) ? { ? if(disposing ? ?components ?!= ?null) ? { ? components.Dispose(); ? } ? base.Dispose(disposing); ? } ? #endregion ? // ?WEB ?服务示例 ? // ?HelloWorld() ?示例服务返回字符串 ?Hello ?World ? // ?若要生成,请取消注释下列行,然后保存并生成项目 ? // ?若要测试此 ?Web ?服务,请按 ?F5 ?键 ? // [WebMethod] ? // public ?string ?HelloWorld() ? // { ? // return ?"Hello ?World"; ? // } ? } ? } ? 下面在(1)处加入

[WebService(Namespace="http。//localhost/webserver/")]

这是因为soap是基于http协议上的,客户端无法知道webservice位于那个服务器上。在实际应用中,比如http。//www。ourfly。com上放置这个webservice,则Namespace改为http。//www。ourfly。com/webserver.

下面我们给这个webservice添加一个方法。

// [WebMethod] ? // public ?string ?HelloWorld() ? // { ? // return ?"Hello ?World"; ? // } ? 微软帮我们写好了一个,接着添加一个方法。 ?方法名称叫show. ? [WebMethod] ? public ?string ?show(string ?yourname) ? { ? return ?“http。//www。ourfly。com”+”欢迎”+yourname; ? } ? 现在,就可以运行了,按F5,点击show,输入你的名字, ?然后点击invote 看到了吧。 ? 〈 ?Xml ?version="1.0" ?encoding="utf-8" ??〉 ? ? 〈 string ?Xmlns="http。//tempuri。org/"〉 ?http。//www。ourfly。com欢迎yyg〈 /string〉 ?成功了。打开bin目录,Vs.Net已经将proxy做好了.webserver.dll.

现在我们在不同的环境下测试:

1.打开vs.Net,新建”windows应用程序”工程,命名为Client,增加按钮,文本框。

现在要用到代理了,右键单击右边的reference(引用),选择”添加引用”,选择浏览,找到webserver目录下的bin目录下的webserver.dll

再加入一个system.web.webservices的引用,在列表中有。

在form1.cs里,加入

using System.Web.Services;

using webserver;

然后在

private ?System.Windows.Forms.Button ?button1;

private ?System.Windows.Forms.TextBox ?textBox1;

后面,插入

private ?webserver.service1 ?Client

建立一个service1的实例。双击按钮,代码如下:

private ?void ?button1_Click ?(object ?sender, ?System.EventArgs ?e) ? { ? Client ?=new ?Service1(); ? string ?name; ? name=Client.show("龙卷风.Net"); ? textBox1.Text=name; ? } ? 按F5,运行工程,点击按钮,文本框中显示 http。//www。ourfly。com欢迎龙卷风.Net

2. Asp.Net ?web窗口的测试

方法与上面的一模一样,添加引用,建立service1的实例 在此不在细说。

3.在VB中测试

这个就要相对来说复杂一些 ,首先在VB中建立一个”标准EXE”的工程。添加引用:Microsoft ?Soap ?Type ?library。

注意:如果没有安装Microsoft ?Soap ?Toolkit,是没有这个类型库的。

webservice 怎么调用

ava调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。

1、编写代码方式:

package com.yudun.test;

import java.rmi.RemoteException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.message.PrefixedQName;

import org.apache.axis.message.SOAPHeaderElement;

import com.cezanne.golden.user.Exception;

import com.cezanne.golden.user.UserManagerServiceProxy;

import javax.xml.namespace.QName;

import java.net.MalformedURLException;

import javax.xml.rpc.ServiceException;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPException;

public class testWebService {

public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException

{

//标识Web Service的具体路径

String endpoint = "WebService服务地址";

// 创建 Service实例

Service service = new Service();

// 通过Service实例创建Call的实例

Call call = (Call) service.createCall();

//将Web Service的服务路径加入到call实例之中.

call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

// 由于需要认证,故需要设置调用的SOAP头信息。

Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );

org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);

header.addTextNode( "blablabla" );

call.addHeader(header);

// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");

// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");

// try

// {

// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");

// }

// catch (SOAPException e)

// {

// e.printStackTrace();

// }

// call.addHeader(soapHeaderElement);

//调用Web Service的方法

org.apache.axis.description.OperationDesc oper;

org.apache.axis.description.ParameterDesc param;

oper = new org.apache.axis.description.OperationDesc();

oper.setName("opName");

param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

oper.setReturnType(new javax.xml.namespace.QName("", "string"));

oper.setReturnClass(java.lang.String.class);

oper.setReturnQName(new javax.xml.namespace.QName("", "return"));

oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

oper.setUse(org.apache.axis.constants.Use.LITERAL);

oper.addFault(new org.apache.axis.description.FaultDesc(

new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),

"Exception",

new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),

true

));

call.setOperation( oper );

call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));

//调用Web Service,传入参数

String res = ( String ) call.invoke( new Object[]("arg0","arg1"));

System.out.println("===============");

return res;

}

/**

* @param args

*/

public static void main(String[] args) {

try {

System.out.println(getResult());

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (RemoteException e) {

e.printStackTrace();

} catch (ServiceException e) {

e.printStackTrace();

} catch (SOAPException e) {

e.printStackTrace();

}

}

}

2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)

首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish

这样,WebService Client代码已经生成好了。

接下来写一个Test类,在main函数中输入如下代码:

String endpoint = "服务器的WebService的地址";

YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);

try {

String resultStr = umsp.opMethod("arg0","arg1");

System.out.println(resultStr);

} catch (Exception e) {

System.out.println("异常");

e.printStackTrace();

} catch (RemoteException e) {

System.out.println("RemoteException异常");

e.printStackTrace();

}

(责任编辑:IT教学网)

更多

推荐其它软件文章