亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

C#下的webservcie 實現代碼和 在vc和python下的調用實現

2024-07-21 02:18:37
字體:
來源:轉載
供稿:網友
c#下的webservcie 實現代碼,很簡單一看就清楚了是完成什么樣的功能了

using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.diagnostics;
using system.web;
using system.web.services;

namespace webhelloz5
{
/// <summary>
/// service1 的摘要說明。
/// </summary>
public class service1 : system.web.services.webservice
{
public service1()
{
//codegen:該調用是 asp.net web 服務設計器所必需的
initializecomponent();
}

#region component designer generated code

//web 服務設計器所必需的
private icontainer components = null;

/// <summary>
/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
/// 此方法的內容。
/// </summary>
private void initializecomponent()
{
}

/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
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 helloworld1()
//{
// return "hello world";
//}

[webmethod]
public string helloworld(int narg, string strarg)
{
return strarg+ narg.tostring();
}


}
}


下面就是調用webservice時,網絡上大家發送的數據包了

client請求數據:

post /webhelloz5/service1.asmx http/1.1
host: localhost
content-type: text/xml
content-length: length
soapaction: "http://tempuri.org/helloworld"

<?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>
<helloworld xmlns="http://tempuri.org/">
<narg>int</narg>
<strarg>string</strarg>
</helloworld>
</soap:body>
</soap:envelope>

server回應數據:

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>
<helloworldresponse xmlns="http://tempuri.org/">
<helloworldresult>string</helloworldresult>
</helloworldresponse>
</soap:body>
</soap:envelope>



vc7下的自動生成的代理類,如下所示:

template <typename tclient>
inline hresult cservice1t<tclient>::helloworld(
int narg,
bstr strarg,
bstr* helloworldresult
)
{
hresult __atlsoap_hr = initializesoap(null);
if (failed(__atlsoap_hr))
{
setclienterror(soapclient_initialize_error);
return __atlsoap_hr;
}

cleanupclient();

ccomptr<istream> __atlsoap_spreadstream;
__cservice1_helloworld_struct __params;
memset(&__params, 0x00, sizeof(__params));
__params.narg = narg;
__params.strarg = strarg;

__atlsoap_hr = setclientstruct(&__params, 0);
if (failed(__atlsoap_hr))
{
setclienterror(soapclient_outofmemory);
goto __skip_cleanup;
}

__atlsoap_hr = generateresponse(getwritestream());
if (failed(__atlsoap_hr))
{
setclienterror(soapclient_generate_error);
goto __skip_cleanup;
}

__atlsoap_hr = sendrequest(_t("soapaction: /"http://tempuri.org/helloworld/"/r/n"));
if (failed(__atlsoap_hr))
{
goto __skip_cleanup;
}
__atlsoap_hr = getreadstream(&__atlsoap_spreadstream);
if (failed(__atlsoap_hr))
{
setclienterror(soapclient_read_error);
goto __skip_cleanup;
}

// cleanup any in/out-params and out-headers from previous calls
cleanup();
__atlsoap_hr = beginparse(__atlsoap_spreadstream);
if (failed(__atlsoap_hr))
{
setclienterror(soapclient_parse_error);
goto __cleanup;
}

*helloworldresult = __params.helloworldresult;
goto __skip_cleanup;

__cleanup:
cleanup();
__skip_cleanup:
resetclientstate(true);
memset(&__params, 0x00, sizeof(__params));
return __atlsoap_hr;
}

流程為:

1 初始化參數列表( setclientstruct(&__params, 0);)
|
v

2.生成發送數據請求(generateresponse(getwritestream());sendrequest(_t("soapaction: /"http://tempuri.org/helloworld/"/r/n"));)
|
v
3.接收和解析回應數據(beginparse(__atlsoap_spreadstream);)
|
v
4.清理工作


python代碼:

#author:zfive5(zhaozidong)
#email: [email protected]

import httplib
import xml.parsers.expat
import urlparse

class zfive5web:

def __init__(self, url,xmlns):
self.url=url
self.xmlns=xmlns
self.ret=""
self.data=""

def gen_request(self,strfunc,strxmlns,dictarg):
ret="<soap:envelope xmlns:soap=/"http://schemas.xmlsoap.org/soap/envelope//" xmlns:xsi=/"http://www.w3.org/2001/xmlschema-instance/" xmlns:xsd=/"http://www.w3.org/2001/xmlschema/" xmlns:soapenc=/"http://schemas.xmlsoap.org/soap/encoding//">"
ret+="<soap:body>"
ret+="<%s xmlns=/"%s//">"%(strfunc,strxmlns)
for (k,v) in dictarg.items():
if k is int:
ret+="<%s>%s</%s>"%(k,str(v),k)
else:
ret+="<%s>%s</%s>"%(k,v,k)
ret+="</%s>"%(strfunc)
ret+="</soap:body>"
ret+="</soap:envelope>"
return ret

def hello_world(self,argl):
func="helloworld"
addr=urlparse.urlparse(self.url)
argd={}
argd["narg"]=argl[0]
argd["strarg"]=argl[1]

try:
header={}
header['host']='localhost'
header['content-type']='text/xml'
header['soapaction']='/"%s/%s/"'%(self.xmlns,func)
conn=httplib.httpconnection(addr[1])
print self.gen_request(func,self.xmlns,argd)
conn.request('post','/webhelloz5/service1.asmx',self.gen_request(func,self.xmlns,argd),header)
resp=conn.getresponse()
dataxml=resp.read()
def start_element(name, attrs):
pass

def end_element(name):
if name=='helloworldresult':
self.ret=self.data
#elif name=='ourputarg':
# argl[0]=self.temp

def char_data(data):
self.data=data

pxml=xml.parsers.expat.parsercreate()
pxml.startelementhandler = start_element
pxml.endelementhandler = end_element
pxml.characterdatahandler = char_data
pxml.parse(dataxml, 1)
except:
return none
return self.ret

def test():
a=zfive5web("http://127.0.0.1/webhelloz5/service1.asmx","http://tempuri.org")
l=[1,'121']
ret=a.hello_world([1,'121'])

if __name__ == '__main__':
assert test()

流程與上差不多如果實現分析.asmx?wdsl文件就完全可以vs中的添加web引用的功能,這里
剩下的主要是特殊符號的處理和類型轉化工作。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情在线播放| 尤物yw午夜国产精品视频明星| 日韩国产精品视频| 亚洲人成电影在线观看天堂色| 国产精品人人做人人爽| 日韩av免费在线看| 欧美日韩精品在线播放| 欧美一区亚洲一区| 97视频com| 久久999免费视频| 亚洲精品美女在线观看播放| 亚洲第一区第二区| 2019国产精品自在线拍国产不卡| 国产精品久久一区主播| 伊是香蕉大人久久| 亚洲国产精品系列| 97精品国产91久久久久久| 欧洲永久精品大片ww免费漫画| 欧美亚洲成人xxx| 国产乱人伦真实精品视频| 欧美网站在线观看| 色狠狠久久aa北条麻妃| 国产精品美女视频网站| 亚洲人成电影网站色| 精品视频在线导航| 色无极亚洲影院| 亚洲精品电影久久久| 亚洲第一视频网站| 成人免费视频在线观看超级碰| 欧美洲成人男女午夜视频| 日韩网站免费观看| 2019最新中文字幕| 亚洲欧美国内爽妇网| 色综合男人天堂| 色综合久综合久久综合久鬼88| 成人在线小视频| 亚洲人午夜色婷婷| 欧美日韩午夜剧场| 欧美色欧美亚洲高清在线视频| 亚洲午夜女主播在线直播| 欧美在线视频一二三| 777午夜精品福利在线观看| 成人a在线观看| 欧美国产日韩免费| 视频在线观看99| 国产美女扒开尿口久久久| 午夜精品一区二区三区在线| 一个人www欧美| 92版电视剧仙鹤神针在线观看| 亚洲国产女人aaa毛片在线| 国产日韩在线看片| 亚洲精品网址在线观看| 国产精品久久久久久搜索| 国产日韩av在线| 国内揄拍国内精品少妇国语| 国产不卡一区二区在线播放| 欧美老少做受xxxx高潮| 久久久最新网址| 久久精彩免费视频| 亚洲成人激情图| 国产精品一区二区女厕厕| 成人福利在线视频| 欧美视频在线观看免费网址| 免费91麻豆精品国产自产在线观看| 亚洲欧美另类在线观看| 中文字幕不卡在线视频极品| 性欧美长视频免费观看不卡| 久久精品一区中文字幕| 亲爱的老师9免费观看全集电视剧| 久久免费视频网站| 国产精品日日摸夜夜添夜夜av| 亚洲视频第一页| 精品久久久久久久大神国产| 国产亚洲欧美一区| 最近2019中文字幕mv免费看| 国产精品黄页免费高清在线观看| 亚洲色图欧美制服丝袜另类第一页| 国产欧美一区二区三区久久人妖| 欧美一性一乱一交一视频| 国产高清视频一区三区| 久久影院资源站| 精品国产电影一区| 在线亚洲欧美视频| 国产欧美韩国高清| 日韩在线观看免费全| 成人av电影天堂| 视频在线观看99| 亚洲欧美在线免费| 久久影视电视剧凤归四时歌| 久久天天躁夜夜躁狠狠躁2022| 北条麻妃99精品青青久久| 最近2019中文免费高清视频观看www99| 欧美一级大片在线免费观看| 久久久999精品免费| 国产精品久久久久久久久久99| 欧美性xxxx极品hd满灌| 成人福利视频在线观看| 69久久夜色精品国产69乱青草| 国产精品久久久久久久久久ktv| 最近2019中文字幕第三页视频| 91成人在线视频| 亚洲综合日韩中文字幕v在线| 亚洲三级 欧美三级| 在线播放精品一区二区三区| 成人性生交大片免费观看嘿嘿视频| 岛国av一区二区| 国模精品一区二区三区色天香| 欧美精品久久久久| 国产精品激情av电影在线观看| 亚洲自拍偷拍视频| 亚洲黄一区二区| 日本在线精品视频| 国产精品mp4| 亚洲精品www久久久久久广东| 日韩精品中文字| 欧美性猛交xxxx免费看漫画| 久久久免费在线观看| 欧美—级高清免费播放| 91亚洲精品一区二区| 欧美视频一区二区三区…| 尤物99国产成人精品视频| 日韩成人久久久| 国产精品91在线观看| 欧美国产精品日韩| 黑人巨大精品欧美一区二区免费| 亚洲一区二区三区久久| 在线播放日韩欧美| 国产精品久久久久久av福利| 精品国产1区2区| 日韩中文字幕国产| 久久精品视频va| 国产va免费精品高清在线| 久久福利网址导航| 欧美成aaa人片在线观看蜜臀| 亚洲综合中文字幕68页| 亚洲美女黄色片| 国内免费久久久久久久久久久| 日韩在线观看免费全集电视剧网站| 日韩av在线天堂网| 懂色aⅴ精品一区二区三区蜜月| 蜜月aⅴ免费一区二区三区| 色多多国产成人永久免费网站| 亚洲精品一区二区三区婷婷月| 粉嫩av一区二区三区免费野| 日韩av免费看| 中文字幕日韩精品在线观看| 亚洲黄色av女优在线观看| 欧美电影在线播放| 日韩av色在线| 欧美亚洲国产视频小说| 欧美一区二区.| 成人写真福利网| 久久国产精品电影| 欧美日韩亚洲高清| www.亚洲一区| 亚洲男人天堂手机在线| 欧美精品激情在线观看| 久久久视频免费观看| 欧美性生交xxxxx久久久| 亚洲美女自拍视频| 精品福利樱桃av导航| 国产精品欧美在线| 92福利视频午夜1000合集在线观看| 国产一区二区三区直播精品电影|