




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CString m_strHttp = _T(/TranslateService.asmx);CString m_strObject = _T(/TranslateService.asmx);/本文以调用 /TranslateService.asmx中的 /Translate 方法为例说明如何调用 WebService 中的方法/UTF8编码、解码 .由于 webservice 中返回的默认的数据类型是 utf8 编码格式的,/所以本人将其转换成 Unicode 编码格式,以便于程序查看./编码/Convert(str,936,CP_UTF8);/解码/Convert(str,CP_UTF8,936);/编码、解码函数CString CWebService:Convert(CString strInput, int nSourceCodepage, int nTargetCodepage)int len = strInput.GetLength(); wchar_t* pUnicode = NULL; int unicodeLen = MultiByteToWideChar(nSourceCodepage,0,(const char *)strInput.GetBuffer(0),-1,NULL,0); pUnicode=new wchar_tunicodeLen+1; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t); MultiByteToWideChar(nSourceCodepage,0,(const char *)strInput.GetBuffer(0),-1,(LPWSTR)pUnicode,unicodeLen); BYTE* pTargetData = NULL; int targetLen=WideCharToMultiByte(nTargetCodepage,0,(LPWSTR)pUnicode,-1,(char *)pTargetData,0,NULL,NULL); pTargetData=new BYTEtargetLen+1; memset(pTargetData,0,targetLen+1); WideCharToMultiByte(nTargetCodepage,0,(LPWSTR)pUnicode,-1,(char *)pTargetData,targetLen,NULL,NULL); CString strTarget; strTarget.Format(%s,pTargetData); delete pUnicode; delete pTargetData; return strTarget; DWORD dwHttpRequestFlags =INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;const TCHAR szHeaders =_T(Accept: text/*rnUser-Agent: MFC_WebSevice_Samplern);/GetWebServiceObject:获取 webservice 方法的返回的数据/strURL 包函了 WebService 的调用地址和方法,以及传递给方法的参数/strObjectType 为 WebService 返回的数据类型,本文是 string (字符串)类型CString CWebService:GetWebServiceObject(CString strURL, CString strObjectType)CString strList;CString strXMLObject;LPCTSTR pszURL = strURL;BOOL bStripMode = FALSE;CHttpFile *pFile = NULL;CInternetSession netSession;CHttpConnection* pServer = NULL;tryCString strServerName;CString strObject;INTERNET_PORT nPort;DWORD dwServiceType;if (!AfxParseURL(pszURL, dwServiceType, strServerName, strObject, nPort) |dwServiceType != INTERNET_SERVICE_HTTP)THROW(1);pServer = netSession.GetHttpConnection(strServerName, nPort);pFile = pServer-OpenRequest(CHttpConnection:HTTP_VERB_GET,strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);pFile-AddRequestHeaders(szHeaders);pFile-SendRequest();DWORD dwRet;pFile-QueryInfoStatusCode(dwRet);if (dwRet = HTTP_STATUS_DENIED)/需要用户名密码DWORD dwPrompt;dwPrompt = pFile-ErrorDlg(NULL, ERROR_INTERNET_INCORRECT_PASSWORD,FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, NULL);if (dwPrompt != ERROR_INTERNET_FORCE_RETRY)THROW (1);pFile-SendRequest();pFile-QueryInfoStatusCode(dwRet);if (dwRet = HTTP_STATUS_MOVED |dwRet = HTTP_STATUS_REDIRECT |dwRet = HTTP_STATUS_REDIRECT_METHOD)/需要重定向CString strNewLocation;pFile-QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strNewLocation);int nPlace = strNewLocation.Find(_T(Location: );if (nPlace = -1)THROW (2);strNewLocation = strNewLocation.Mid(nPlace + 10);nPlace = strNewLocation.Find(n);if (nPlace 0)strNewLocation = strNewLocation.Left(nPlace);pFile-Close();delete pFile;pServer-Close();delete pServer;/ figure out what the old place wasif (!AfxParseURL(strNewLocation, dwServiceType, strServerName, strObject, nPort)THROW (2);if (dwServiceType != INTERNET_SERVICE_HTTP)THROW (2);/ try again at the new locationpServer = netSession.GetHttpConnection(strServerName, nPort);pFile = pServer-OpenRequest(CHttpConnection:HTTP_VERB_GET,strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);pFile-AddRequestHeaders(szHeaders);pFile-SendRequest();pFile-QueryInfoStatusCode(dwRet);if (dwRet != HTTP_STATUS_OK)THROW(2);return _T();CString strRead;int nRow = 0;strList.Empty();int nSize = pFile-GetLength();while(pFile-ReadString(strRead)int nNum = strRead.GetLength();strRead = Convert(strRead,CP_UTF8,936);strList += strRead;catch(CInternetException* pEx)TCHAR szErr1024;pEx-GetErrorMessage(szErr, 1024);int nRetCode = 2;pEx-Delete();CString strMsg;strMsg.Format(%s,szErr);CEBookDlg* pEBookWnd = (CEBookDlg*)AfxGetMainWnd();return strMsg;if (pFile != NULL)delete pFile;pFile = NULL;if (pServer != NULL)delete pServer;pServer = NULL;netSession.Close();/将XML对象解析出来int nObj = strList.Find(strObjectType);int nLeft = strList.Find(,nObj);int nRight = strList.Find(,nLeft);strXMLObject = strList.Mid(nLeft + 1,nRight - nLeft - 1);/return strXMLObject;/调用 WebService 中的方法void Translate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江财经大学东方学院《工程机械及维修》2024-2025学年第一学期期末试卷
- 安徽农业大学《机械设计基础Ⅱ》2024-2025学年第一学期期末试卷
- 苏州健雄职业技术学院《计算机多媒体技术》2024-2025学年第一学期期末试卷
- 四川现代职业学院《商务沟通》2024-2025学年第一学期期末试卷
- 广州珠江职业技术学院《环境微生物》2024-2025学年第一学期期末试卷
- 武威职业学院《CAD二次开发技术》2024-2025学年第一学期期末试卷
- 合肥幼儿师范高等专科学校《系统仿真》2024-2025学年第一学期期末试卷
- 河北地质大学华信学院《性别社会学》2024-2025学年第一学期期末试卷
- 河南医学高等专科学校《物理教学技能训练》2024-2025学年第一学期期末试卷
- (2025年标准)出卖设备协议书
- 北信源终端安全登录与文件保护系统用户使用手册
- 护理文书书写规范-课件
- 安全技术交底签字表格【范本模板】
- 工程质保期满验收报告模板
- 2023年版下肢动脉硬化闭塞症诊治指南
- 决奈达隆在心房颤动治疗中的应用培训课件
- DB21T 3164-2019 辽宁省绿色建筑施工图设计审查规程
- 工伤知识培训(工伤待遇篇)课件
- 外研版八年级下册英语 module 6 测试
- 交通运输安全管理整套教学课件
- 股权质押合同工商局模板参考
评论
0/150
提交评论