客户端通过代理服务器(CMWap)遇到的问题
来源:互联网 发布:淘宝网复制软件小黄鸭 编辑:程序博客网 时间:2024/05/21 17:05
移动的如果客户端对标准的http头的某个域进行赋值可能是徒劳无功的,移动会重新对标准的头进行默认的处理,当然,每个域有固定的域值范围,选一个标准的值是没问题的。扩展自定义的域是可以的。估计这么做的出发点是安全方面的吧 联通的 先说几个http错误吧:400:去掉“HTTP::EHost”设置就没问题了。500:服务器没有找到请求资源302:加上“HTTP::EContentType” 最后进过几天的折磨终于搞定了,联通的和移动的都可以了!post头: _LIT8( KContentText, "text/plain");//上传字符串用_LIT8( KContentText,"multipart/form-data");//上传文件用,例如jsp_LIT8( KUserAgentSimpleClient, "SimpleClient 1.0" );_LIT8( KHttpVersion11,"HTTP/1.1" );_LIT8( KAccept,"Accept");_LIT8(KUserAgent, "LARK/1.3.0"); RStringF method = iSession.StringPool().StringF( HTTP::EPOST,RHTTPSession::GetTable()); iTransaction = iSession.OpenTransactionL( uri, *this, method ); RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection(); SetHeaderL( hdr, HTTP::EUserAgent, KUserAgentSimpleClient );SetHeaderL( hdr, HTTP::EContentType, KContentText);SetHeaderL( hdr, HTTP::EHTTPVersion, KHttpVersion11);SetHeaderL( hdr, _L8("Proxy-Connection"), _L8("Keep-Alive") );SetHeaderL( hdr, _L8("AcceptType"), _L8("REGISTER") );//扩展自定义http头域 get: SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent); SetHeaderL(hdr, HTTP::EAccept, KAccept); SetHeaderL( hdr, _L8("Proxy-Connection"), _L8("Keep-Alive") ); 下面是头域有关的方法: void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)//设置标准httpheader{ RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue); CleanupClosePushL(valStr); THTTPHdrVal val(valStr); aHeaders.SetFieldL(iSession.StringPool().StringF(aHdrField, RHTTPSession::GetTable()), val); CleanupStack::PopAndDestroy(); // valStr}void SetHeaderL(RHTTPHeaders aHeaders,const TDesC8& aHdrField, const TDesC8& aHdrValue)//设置非标准httpheader{ TInt leaveValue; RStringF contTypeStr; RStringF contTypeStrfield; TRAP(leaveValue, contTypeStr = iSession.StringPool().OpenFStringL(aHdrValue)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().OpenFStringL() aHdrValue. TRAP")); } TRAP(leaveValue, contTypeStrfield = iSession.StringPool().OpenFStringL(aHdrField)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().OpenFStringL() aHdrField. TRAP")); } THTTPHdrVal contType(contTypeStr); TRAP(leaveValue, aHeaders.SetFieldL(contTypeStrfield,contType)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().SetFieldL() TRAP")); } contTypeStr.Close(); contTypeStrfield.Close();}void SetHeaderL(TInt aHdrField,const TDesC8& aHdrValue)//设置标准httpheader{ RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue); CleanupClosePushL(valStr); THTTPHdrVal val(valStr); iTransaction.Request().GetHeaderCollection().SetFieldL(iSession.StringPool().StringF(aHdrField, RHTTPSession::GetTable()), val); CleanupStack::PopAndDestroy(); // valStr}void SetHeaderL(const TDesC8& aHdrField, const TDesC8& aHdrValue)//设置非标准httpheader{ TInt leaveValue; RStringF contTypeStr; RStringF contTypeStrfield; TRAP(leaveValue, contTypeStr = iSession.StringPool().OpenFStringL(aHdrValue)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().OpenFStringL() aHdrValue. TRAP")); } TRAP(leaveValue, contTypeStrfield = iSession.StringPool().OpenFStringL(aHdrField)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().OpenFStringL() aHdrField. TRAP")); } THTTPHdrVal contType(contTypeStr); TRAP(leaveValue, iTransaction.Request().GetHeaderCollection().SetFieldL(contTypeStrfield,contType)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("SetNewHeader() : StringPool().SetFieldL() TRAP")); } contTypeStr.Close(); contTypeStrfield.Close();}TInt GetHeaderL(RHTTPHeaders aHeaders,const TDesC8& aHdrField,TDes& aVal)//获取header{ TPtrC8 aHdrFieldSymbptr(aHdrField); THTTPHdrVal contTypeStrValue; TInt leaveValue; RStringF contTypeStr; TRAP(leaveValue, contTypeStr = iSession.StringPool().OpenFStringL(aHdrFieldSymbptr)); if (leaveValue != KErrNone ) { User::InfoPrint(_L("GetHeader() : StringPool().OpenFStringL() TRAP")); } TInt headererror; headererror = aHeaders.GetField(contTypeStr,0, contTypeStrValue); contTypeStr.Close(); if (headererror != KErrNone || headererror == KErrNotFound) { return 0; } else { switch (contTypeStrValue.Type()) { case THTTPHdrVal::KTIntVal: //< the value is a case-sensitive string { TBuf8<32> buf; buf.Format(_L8("%d"),contTypeStrValue.Int()); aVal.Copy(buf); break; } case THTTPHdrVal::KStrVal: //< the value is a case-sensitive string case THTTPHdrVal::KStrFVal: //< the value is a case-insensitive string { RStringF tempheader; TInt i_size=0; tempheader = iSession.StringPool().StringF(contTypeStrValue.StrF()); TText16 buf1[128]; TPtr16 tPtr16(buf1,128); TText16 buf2[128]; i_size = ( tempheader.DesC().Length() * sizeof(TText16)) + sizeof(TText16); TPtr16 p16Val((unsigned short *)buf2,i_size); p16Val.Copy(tempheader.DesC()); p16Val.PtrZ(); tPtr16.Append(p16Val); aVal = tPtr16; } break; case THTTPHdrVal::KDateVal: //< the value is a date/time case THTTPHdrVal::KNoType: //< no value has yet been set default : break; } return 1; } }void SetCookieL(RHTTPHeaders aHeaders)//设置cookie{ RStringPool string_pool = iSession.StringPool(); RStringF cookie_rsf = string_pool.StringF(HTTP::ECookie,RHTTPSession::GetTable()); THTTPHdrVal field_value; field_value.SetStrF (cookie_rsf); aHeaders.SetFieldL(cookie_rsf, field_value); THTTPHdrVal cookie_hdr; RStringF cookie_name_rsf = string_pool.StringF(HTTP::ECookieName,RHTTPSession::GetTable()); RStringF name = string_pool.OpenFStringL (iCookieName); cookie_hdr.SetStrF (name); aHeaders.SetParamL (cookie_rsf, cookie_name_rsf, cookie_hdr, 0); RStringF cookie_value_rsf = string_pool.StringF(HTTP::ECookieValue,RHTTPSession::GetTable()); RStringF value = string_pool.OpenFStringL (iCookieValue); cookie_hdr.SetStrF (value); aHeaders.SetParamL (cookie_rsf, cookie_value_rsf, cookie_hdr, 0); name.Close(); value.Close();}
- 客户端通过代理服务器(CMWap)遇到的问题
- 时间获取客户端程序遇到的问题
- WcF生成客户端遇到的问题/
- 客户端写博客遇到的问题
- 做douban客户端时遇到的问题
- 使用SVN客户端时遇到的问题
- FileZilla客户端使用遇到的问题
- Android通过webservice连接SQLServer 详细教程以及所遇到的问题解答(数据库+服务器+客户端)
- ubuntu下openssl客户端通过代理服务器访问远程主机
- jmx通过客户端访问的问题
- Linux通过命令行添加代理服务器,解决apt-get不能上网的问题
- 通过自建代理服务器增强 Applet 的功能
- 通过nginx搭建一个简单的代理服务器
- J2me开发中采用CMWAP接入点的问题
- Android网络连接Wifi和cmnet及cmwap的问题
- 关于svn(客户端)在安装完成过程中所遇到的一点问题
- webservices客户端开发时遇到的一些问题
- 在打包客户端程序时遇到的问题
- Lucene进阶:and 和or的条件查询
- jsp跳出框架的代码
- 压缩SQL Server 2005指定数据库文件和日志的大小
- 替换Visual C++提供的CRT Library
- LR工具-web_reg_find函数的使用
- 客户端通过代理服务器(CMWap)遇到的问题
- 开源的java游戏引擎及框架(包括有网页引擎)
- 回车 和 换行 的区别
- skyeye.conf硬件配置文件
- 数据库设计多对多关系的几种形态
- ssh面试题
- C#.NET 中的类型转换
- 创建栈
- SUMMARY OF JANE EYRE