
www.hot007.com | #include "Soap.h" SoapWriter *pSoap = new SoapWriter(); pSoap->StartEnvelope(); pSoap->StartBody(); pSoap->StartElement(L"GetLatLong", L"http://mapmobile"); pSoap->WriteElementString(L"addressLine", L"new bond street"); pSoap->WriteElementString(L"city", L"bath"); pSoap->StartElement(L"postCode"); pSoap->EndElement(L"postCode"); pSoap->WriteElementString(L"country", L"UK"); pSoap->EndElement(L"GetLatLong"); pSoap->EndBody(); pSoap->EndEnvelope(); pSoap->FinalizeSoap(); |
www.hot007.com
| #include "Soap.h" SoapWriter *pSoap = new SoapWriter(); //在此处建立SOAP 请求 SoapConnector *pCon = new SoapConnector(); pCon->Init(); //连接到服务器和Web服务 pCon->Connect(L"http://chungw02:8080/mapmobile/map.asmx"); //同SOAP 消息和SoapAction 一起调用 pCon->Invoke(pSoap, L"http://mapmobile/GetLatLong"); //提取响应信息 int iLen = 0; pCon->GetSoapLength(&iLen); TCHAR *pResponse = new TCHAR[iLen 1]; pCon->GetSoap(&pResponse); |
www.hot007.com
| #include "Soap.h" //读取SOAP 响应信息 pSoapReader = new SoapReader(); pSoapReader->Init(); //通过传递SoapConnector或者Xml字符串载入SOAP响应信息 pSoapReader->LoadXml(pCon); |
| MSXML::IXMLDOMNode *pNode = NULL; MSXML::IXMLDOMNodeList *pNodeList = NULL; MSXML::IXMLDOMNode *pTextNode = NULL; TCHAR *lpNodeValue = NULL; TCHAR *XPath = new TCHAR[50]; _tcscpy(XPath, L"/soap:Envelope/soap:Body/Node"); VARIANT vNodeVal; HRESULT hr; //使用前面建立的pSoapReader try { //选择节点 www.hot007.com hr = pSoapReader ->m_pDom->selectSingleNode(XPath, &pNode); if (FAILED(hr)) __leave; if (pNode == NULL) __leave; //获取子节点 hr = pNode->get_childNodes(&pNodeList); if (FAILED(hr)) __leave; //获取下一个节点 hr = pNodeList->get_item(0, &pTextNode); if (FAILED(hr)) __leave; //获取文本节点值 VariantInit(&vNodeVal); hr = pTextNode->get_nodeValue(&vNodeVal); if (FAILED(hr)) { VariantClear(&vNodeVal); __leave; } //将值指定给lpNodeValue lpNodeValue = TCHAR[SysStringLen(vNodeVal.bstrVal) 1]; _tcscpy(lpNodeValue, vNodeVal.bstrVal); VariantClear(&vNodeVal); //使用lpNodeValue处理事务 } __finally { if (pNode != NULL) pNode->Release(); if (pNodeList != NULL) pNodeList->Release(); if (pTextNode != NULL) pTextNode->Release(); if (lpNodeValue !=NULL) delete[] lpNodeValue; } |
文章来源于www.hot007.com
| //注重这些有辅助方法SelectSingleTextNode分配 TCHAR *latitude = NULL; TCHAR *longitude = NULL; //使用前面建立的pSoapReader pSoapReader->SelectSingleTextNode(L"/soap:Envelope/soap:Body/GetLatLongResponse /latitude", &latitude); pSoapReader->SelectSingleTextNode(L"/soap:Envelope/soap:Body/GetLatLongResponse /longitude", &longitude); //使用返回值处理事务 //清除 if (latitude != NULL) delete[] latitude; if (longitude != NULL) delete[] longitude; |

| [WebMethod] [SoapHeader("_phoneNumber", Direction=SoapHeaderDirection.In)] public void GetLatLong(string addressLine, string city, string postCode, string country, out double latitude, out double longitude) [WebMethod] [SoapHeader("_phoneNumber", Direction=SoapHeaderDirection.In)] public byte[] GetMap(double latitude, double longitude, double zoom, int width, int height, string tag) |

| TCHAR *g_PhoneNumber = new TCHAR[40]; SMS_ADDRESS pAddr; //获取电话号码 SmsGetPhoneNumber(&pAddr); _tcscpy(g_PhoneNumber, pAddr.ptsAddress); |
| SoapWriter *pSoap = new SoapWriter(); sw->StartEnvelope(); //构造头 sw->StartHeader(); sw->StartHeaderElement(L"MapMobileHeader", L"http://mapmobile"); sw->WriteHeaderElementString(L"PhoneNumber", g_PhoneNumber); sw->EndHeaderElement(L"MapMobileHeader"); sw->EndHeader(); //Soap正文 sw->StartBody(); //此处构造SOAP正文 sw->EndBody(); sw->EndEnvelope(); sw->FinalizeSoap(); |
| TCHAR *map64; //分配内存到目标变量 hrSearch = pSoapReader->SelectSingleTextNode(L"/soap:Envelope/soap:Body/GetMapResponse/GetMap www.hot007.com Result", &map64); |
| TCHAR &soapfault; hrSearch = pSoapReader->SelectSingleTextNode(L"/soap:Envelope/soap:Body/soap:Fault /faultstring", &soapfault); if (SUCCEEDED(hrSearch)) MessageBox(hDlg, soapfault, L"Soap Error", MB_OK | MB_ICONWARNING); else MessageBox(hDlg, L"Call failed", L"Error", MB_OK | MB_ICONWARNING); |

| CHAR szMapFile[MAX_PATH]; SHGetSpecialFolderPath(hwnd, szMapFile, CSIDL_PERSONAL , FALSE); _tcscat(szMapFile, L"\\SmartMap.gif"); //在Orange SPV上 szMapFile包含在 \IPSM\My Document\SmartMap.gif //在模拟器上为: \My Document\SmartMap.gif |

| HBITMAP g_hbm = NULL; 007网络教程网 ReadPictureFile(hDlg, szMapFile, & g_hbm); SendDlgItemMessage(hDlg, IDC_IMAGE, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) g_hbm); |

| //菜单弹出前调用 case WM_INITMENUPOPUP: { //查看是否文件存在和是否激活最新地图菜单 DWORD dwFile = GetFileAttributes(szMapFile); BOOL bEnabled = (dwFile == 0xFFFFFFFF ? FALSE : TRUE); EnableMenuItem((HMENU)wParam, ID_EXIT_LASTMAP, MF_BYCOMMAND | www.jc567.cn (bEnabled?MF_ENABLED:MF_GRAYED)); break; } |