+ -
当前位置:首页 → 问答吧 → Soap为什么EndEnvelope的时候 很慢?

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秒左右! 这是无法接受的 我想问下这是为什么?

作者: North_P   发布时间: 2011-07-14

web版上soap家族势单力薄啊,没人响应。

作者: brainwkernighan   发布时间: 2011-07-14