Soap为什么EndEnvelope的时候 很慢?
时间:2011-07-14
来源:互联网
代码如下:
HRESULT hr;
bool bCallWebservice = TRUE;
hr = m_conn.CreateInstance(__uuidof(HttpConnector30));
hr =m_seri.CreateInstance(__uuidof(SoapSerializer30));
m_conn->Property["EndPointURL"]=url;
m_conn->Property["SoapAction"] = act;
m_conn->Property["Timeout"] = timeout;
// connect
hr = m_conn->Connect();
// send message
m_conn->BeginMessage();
m_seri->Init(_variant_t((IUnknown*)m_conn->InputStream));
m_seri->StartEnvelope("SOAP","","");
m_seri->StartBody("");
m_seri->StartElement(method,namesp,"","");
m_seri->StartElement("filename","","","");
BSTR bfilename = CComBSTR(filename);
m_seri->WriteString(bfilename);
m_seri->EndElement();
m_seri->StartElement("filecontent","","","");
BSTR bContent = CComBSTR(content);
m_seri->WriteString(bContent);
m_seri->EndElement();
m_seri->EndElement();
m_seri->EndBody();
LPSYSTEMTIME lpSystemTime11 = (LPSYSTEMTIME)malloc(sizeof(_SYSTEMTIME));
GetSystemTime(lpSystemTime11);
WORD wBeginTime1 = (lpSystemTime11->wHour * 60 * 60 + lpSystemTime11->wMinute * 60 + lpSystemTime11->wSecond) * 1000 + lpSystemTime11->wMilliseconds;
m_seri->EndEnvelope();
LPSYSTEMTIME lpSystemTime12 = (LPSYSTEMTIME)malloc(sizeof(_SYSTEMTIME));
GetSystemTime(lpSystemTime12);
WORD wBeginTime2 = (lpSystemTime12->wHour * 60 * 60 + lpSystemTime12->wMinute * 60 + lpSystemTime12->wSecond) * 1000 + lpSystemTime12->wMilliseconds;
WORD wReceiveInterval = wBeginTime2 - wBeginTime1;
char temp[100] = {0};
sprintf( temp, "SOAP处理时间:%d毫秒", wReceiveInterval );
CLog log;
log.WriteNormalLog( temp );
hr = m_conn->EndMessage();
m_read->Load( _variant_t((IUnknown*)m_conn->OutputStream),"");
_bstr_t rst= "0";
CString szLog,szText;
szText = (char *) (m_read->RpcResult->text);
单线程 运行的时候?没什么问题,但是当我多线程运行这段程序的时候 出现m_seri->EndEnvelope();这句的时候大约运行了5秒左右! 这是无法接受的 我想问下这是为什么?
HRESULT hr;
bool bCallWebservice = TRUE;
hr = m_conn.CreateInstance(__uuidof(HttpConnector30));
hr =m_seri.CreateInstance(__uuidof(SoapSerializer30));
m_conn->Property["EndPointURL"]=url;
m_conn->Property["SoapAction"] = act;
m_conn->Property["Timeout"] = timeout;
// connect
hr = m_conn->Connect();
// send message
m_conn->BeginMessage();
m_seri->Init(_variant_t((IUnknown*)m_conn->InputStream));
m_seri->StartEnvelope("SOAP","","");
m_seri->StartBody("");
m_seri->StartElement(method,namesp,"","");
m_seri->StartElement("filename","","","");
BSTR bfilename = CComBSTR(filename);
m_seri->WriteString(bfilename);
m_seri->EndElement();
m_seri->StartElement("filecontent","","","");
BSTR bContent = CComBSTR(content);
m_seri->WriteString(bContent);
m_seri->EndElement();
m_seri->EndElement();
m_seri->EndBody();
LPSYSTEMTIME lpSystemTime11 = (LPSYSTEMTIME)malloc(sizeof(_SYSTEMTIME));
GetSystemTime(lpSystemTime11);
WORD wBeginTime1 = (lpSystemTime11->wHour * 60 * 60 + lpSystemTime11->wMinute * 60 + lpSystemTime11->wSecond) * 1000 + lpSystemTime11->wMilliseconds;
m_seri->EndEnvelope();
LPSYSTEMTIME lpSystemTime12 = (LPSYSTEMTIME)malloc(sizeof(_SYSTEMTIME));
GetSystemTime(lpSystemTime12);
WORD wBeginTime2 = (lpSystemTime12->wHour * 60 * 60 + lpSystemTime12->wMinute * 60 + lpSystemTime12->wSecond) * 1000 + lpSystemTime12->wMilliseconds;
WORD wReceiveInterval = wBeginTime2 - wBeginTime1;
char temp[100] = {0};
sprintf( temp, "SOAP处理时间:%d毫秒", wReceiveInterval );
CLog log;
log.WriteNormalLog( temp );
hr = m_conn->EndMessage();
m_read->Load( _variant_t((IUnknown*)m_conn->OutputStream),"");
_bstr_t rst= "0";
CString szLog,szText;
szText = (char *) (m_read->RpcResult->text);
单线程 运行的时候?没什么问题,但是当我多线程运行这段程序的时候 出现m_seri->EndEnvelope();这句的时候大约运行了5秒左右! 这是无法接受的 我想问下这是为什么?
作者: North_P 发布时间: 2011-07-14
web版上soap家族势单力薄啊,没人响应。
作者: brainwkernighan 发布时间: 2011-07-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28