soap与http怎么调用webservice

soap与http怎么调用webservice,第1张

Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

个人以为就把webservice当成是Http这种请求和响应方式就可以处理大部分问题了。

SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。

为了更好的理解SOAP,HTTP,XML如何工作的,不妨先考虑一下COM/DCOM的运行机制,DCOM处理网络协议的低层次的细节问题,如PROXY/STUB间的通讯,生命周期的管理,对象的标识。在客户端与服务器端进行交互的时候,DCOM采用NDR(Network Data Representation)作为数据表示,它是低层次的与平台无关的数据表现形式。

一个测试客户端程序

在我们开始讨论代码之前,让我们首先了解一下使用WebServices传输数据对我们有哪些好处。在下面这个窗体中,我创建了一个简单的测试用客户端程序,该程序将两个不同的WebServices结合到了一个MicrosofteMbeddedVisualBasic应用程序之中。:

SOAP客户端测试程序示例

窗体顶部的TextBox(文本框)用来选择所需的WebService(描述)。这个URI(UniversalResourceIdentifier)是使用SOAPToolkitWizard创建的SDL(服务描述语言,ServicesDescriptionLanguage)文件。

我已经创建了第一个WebService,您可以调用这个WebService(使用顶部的“Get”按钮),这个WebService主要用于测试目的。它调用一个简单的WebService,将您提交的名和姓作为参数连接到了一个包含完整名称的字符串中。

当您输入一个已经在服务器上进行了定义的DSN(数据源名称)以及一个针对该DSN的SQL(结构化查询语言)查询,然后点击“Get”按钮时,它开始变得更有意思了。DSN和SQL作为一个参数传递给了WebService,然后以XML格式返回一个ADORecordset。数据经过分析后,填充在窗体底部的ListView控件中。

在正确对服务器进行了设置的前提下,现在,您可以方便地访问您的企业数据了。您无需任何第三方产品--甚至不使用ADOCE--即可轻松做到这一点。对此,我的一位同事说,“这实在令人惊讶!”

代码讨论

以下代码为cmdGetRecordset_Click事件的代码(当您按下窗体底部的“Get”按钮时运行):

DimlavParameters(2)AsVariant

DimlsAsString

DimlitmAsListItem

DimiAsInteger

'Setparameters

lavParameters(1)=txtDSNText

lavParameters(2)=txtSQLText

'MakeSOAPCall

ls=SOAPCall(txtURIText,"GetRecordset",lavParameters,chkShowPACkets=1)

'ClearandaddListViewheadings

lvwRecordsetColumnHeadersClear

lvwRecordsetColumnHeadersAdd1,,"ArtNo",700

lvwRecordsetColumnHeadersAdd2,,"Description",1450

lvwRecordsetColumnHeadersAdd3,,"Price",850,lvwColumnRight

'ClearandfillListViewfromXML(withRecordsetEmulation)

lvwRecordsetListItEMSClear

XMLRSOpenls

DoWhileNotXMLRSEOF

Setlitm=lvwRecordsetListItemsAdd(,,XMLRS("ArticleNo"))

常用分诊技巧soap公式代表( )

PQRST公式是五个英文单词第一个字母组成的缩写,适用于疼痛的病人。

1、P(Provoke,诱因):疼痛发生的诱因及加重与缓解的因素。

2、Q(quality,性质):疼痛的性质,如绞痛、钝痛、电击样、刀割样、针刺样、烧灼样等。

3、R(radiate,放射):有否放射痛,向哪些部位放射。

4、S(severity,程度):疼痛的程度如何,若把无痛到不能忍受的疼痛用1~10的数字来比喻,相当于哪个数的程度。

5、T(time,时间):疼痛开始、持续、终止的时间。

PQRST记忆公式:一般用于有疼痛的病人。PQRST5个字母相连,刚好是心电图的五个波形字母顺序,因而极易记忆和应用。

扩展资料:

急诊科工作流程:接诊——分诊——处理。其中分诊是根据病人主诉及主要症状和体征,分清疾病的轻、重、缓、急及所属专科,进行初步诊断,安排救治程序及分配专科就诊的技术。 

1、资料收集:问,看,听,闻,触,查;

2、分诊技巧:SOAP公式,PQRST公式(疼痛) ,CRAMS评分(生理+解剖);

3、病情分类:Ⅰ类—危急症,Ⅱ类—急重症,Ⅲ类—亚紧急,Ⅳ类—非紧急。

SOAP公式:即主诉、观察、估计、计划。

1、主诉(Subjective):收集病人或陪人的所有资料。

2、观察(Objective):运用上述观察手段对病人进行病情观察,获得初步印象。

3、估计(Assess):综合上述情况对病情进行分析。

4、计划(Plan):组织抢救程序,进行专科会诊。

SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

OAP消息的编码一般默认为UTF-8,一般情况下是能满足我们的开发的,但是在具体的的项目开发里,可能需要调整为特殊的编码,如Shift_JIS、 GB2312、UTF-16等。鉴于网上关于这方面的资料很少,通过几个小时的搜索和测试,终于找到了更改编码的方式。本文主要以Axis和Axis2做 为SOAP引擎为例,总结其更改方法。

1 Axis

Stubjava文件的调用方法里增加蓝色语句(_callsetProperty(orgapacheaxisclientCallCHARACTER_SET_ENCODING, "Shift_JIS"); )

orgapacheaxisclientCall _call = createCall();

_callsetOperation(_operations[0]);

_callsetUseSOAPAction(true);

_callsetEncodingStyle(null);

_callsetProperty(orgapacheaxisclientCallSEND_TYPE_ATTR, BooleanFALSE);

_callsetProperty(orgapacheaxisAxisEnginePROP_DOMULTIREFS, BooleanFALSE);

_callsetSOAPVersion(orgapacheaxissoapSOAPConstantsSOAP11_CONSTANTS);

_callsetOperationName(new javaxxmlnamespaceQName("http://tempuriorg/wkn15h0", "KN15H0"));

_callsetProperty(orgapacheaxisclientCallCHARACTER_SET_ENCODING, "Shift_JIS");

其中 orgapacheaxisclientCallCHARACTER_SET_ENCODING = javaxxmlsoapcharacter-set-encoding

其他SOAP引擎也是通过类似setProperty( "javaxxmlsoapcharacter-set-encoding", "Shift_JIS" )的方式进行更改编码的。

2 Aixs2

在 Stubjava文件的调用方法里,应该有两种方法修改。

方法一:通过MessageContextsetProperty(orgapacheaxis2ConstantsConfigurationCHARACTER_SET_ENCODING,"UTF-16");

方法二:_operationClientgetOptions()setProperty(orgapacheaxis2ConstantsConfigurationCHARACTER_SET_ENCODING,"Shift_JIS");

(注意: 通过以上两种方式,测试发现都不能成功,似乎始终是按照UTF-8编码处理,参照:http://wwwnabblecom/-Axis2--Character-Set-Encoding-problem-td18645088html)

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/meirong/6585301.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-06
下一篇2023-09-06

发表评论

登录后才能评论

评论列表(0条)

    保存