openURL("http://XXX.XXX.XXX/user?user=sunshine&message=中文测试")
服务器发送的消息都是“.....”
而我在IE的地址栏中“http://XXX.XXX.XXX/user?user=sunshine&message=中文测试”服务器却可以发送的消息“中文测试”。请指点一下,谢谢
服务器发送的消息都是“.....”
而我在IE的地址栏中“http://XXX.XXX.XXX/user?user=sunshine&message=中文测试”服务器却可以发送的消息“中文测试”。请指点一下,谢谢
解决方案 »
- mfc线程中SendMessage调试断言出错
- 读xml文件失败 求xml解析高手指导
- 高手请进:virtual listview 添加100万条数据后 滚动条移动时总闪烁
- 如何使用ACM音频接口将硬盘wav转换成其它采样率的wav,并保存在硬盘上
- 小弟正在看位图图象方面的书,碰到“灰度”这个概念,请问具体什么意思?请问位图数据中哪个部分保存位图象素的灰度值?
- hDC和CDC有本质区别
- About inline
- 怎么实现这个功能?
- 请大家讨论一个异常捕获的问题:TRY...CATCH...END_CATCH不能捕获的异常!!!很好玩
- 那里有InstallShield Perfessional 6.3的远东语言支持包下载
- 送分:请教DIB位图处理:如何处理鼠标在图片内拖动选取区域再显示该区域
- 关于代理服务器的问题
IE does it automatically, while you have to do it in your program.http://codeguru.earthweb.com/cpp_mfc/URLEncode.html
CADlg::DoUrlEncode(CString csSrcData, CString &csDstData)
{
long lngLength;
long lngPos;
char chSrc;
LPCTSTR strSrc;
char *strEr;
CString csHexCode;
CString csSource; csSource.Empty();
lngLength = csSrcData.GetLength();
strSrc = (LPCTSTR)csSrcData;
for (lngPos = 0; lngPos < lngLength; lngPos++) {
chSrc = *(strSrc + lngPos);
if (chSrc != '%') {
csSource += chSrc;
} else {
if (lngPos + 2 < lngLength) {
csHexCode.Empty();
csHexCode += *(strSrc + (++lngPos));
csHexCode += *(strSrc + (++lngPos));
csSource += (unsigned char)strtoul(csHexCode, &strEr, 16);
if (*strEr != 0) {
//throw(cderException);
return 0;
};
} else {
//throw(cderException);
return 0;
};
};
};
//AfxMessageBox( csSource );
csDstData = csSource;
//if (IsJisConvert) {
// csSrc = csSource;
// ConvJisToSJis();
// csSource = csDst;
//};
return 0;
}
IE发送的:
HTTP:
HTTP: 1:GET /muser?user=selfuser&message=测试&destinationAddr=13600000000&messageSave= HTTP/1.1
HTTP: 2:Accept: */*
HTTP: 3:Accept-Language: zh-cn
HTTP: 4:Accept-Encoding: gzip, deflate
HTTP: 5:User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
HTTP: 6:Host:xxx.xxx.com.cn
HTTP: 7:Connection: Keep-Alive
Http: 8:Cookie:JSESSIONID=...................
HTTP: 9:而我的程序却发送的是:
HTTP:
HTTP: 1:GET /muser?user=selfuser&message=测试&destinationAddr=13600000000&messageSave= HTTP/1.1
HTTP: 2:User-Agent: pim
HTTP: 3:Host: xxx.xxx.com.cn
HTTP: 4:Cookie: JSESSIONID=..................
HTTP: 5:
//
// 娭悢柤 : CUrlEncode::EnCode
//
// 婡擻 : URL僄儞僐乕僪
//
// 婡擻愢柧 : csSource偵懳偟偰URL僄儞僐乕僪張棟傪峴偄丄寢壥傪csCode偵弌椡偡傞丅
//
//----------------------------------------------------------------------------
void CUrlEncode::EnCode(bool IsMsgHeader, bool IsJisConvert)
{
int iCodeType;
int iPrevCodeType = 0;
char strBuf[10]; // 嶌嬈僶僢僼傽
CString csTarget; // 曄姺懳徾暥帤楍
CString csConverted; // 曄姺屻偺暥帤楍
LPCTSTR strSrc = (LPCTSTR)csSource;
csCode.Empty();
// 僔儞僌儖僶僀僩僐乕僪丒儅儖僠僶僀僩僐乕僪暘棧
csTarget.Empty();
for (;;) {
iCodeType = GetSJisChar(strSrc, strBuf);
strSrc += iCodeType;
if (iCodeType < 0) break; // 僄儔乕
if (iPrevCodeType != iCodeType && iPrevCodeType != 0) {
// 僔儞僌儖僶僀僩<->儅儖僠僶僀僩偺嫬栚
csConverted.Empty();
if (iPrevCodeType == 2) {
DoUrlEncode(csTarget, csConverted, IsJisConvert, NULL);
} else {
DoUrlEncode(csTarget, csConverted, false, (LPCTSTR)m_csExcept);
};
csCode += csConverted;
csTarget.Empty();
};
if (iCodeType == 0) break;
csTarget += strBuf;
iPrevCodeType = iCodeType;
};
}void CUrlEncode::DoUrlEncode(CString csSrcData, CString &csDstData, bool IsJisConvert, LPCTSTR strExcept)
{
long lngLength; // 僆儕僕僫儖暥帤楍(csSource)偺挿偝
long lngPos; // 張棟埵抲
char chSrc; // 張棟懳徾僐乕僪(1byte)
LPCTSTR strSrc; // 僆儕僕僫儖暥帤楍傊偺億僀儞僞
char strBuf[10]; // 僐乕僪->16恑悢曄姺梡嶌嬈僶僢僼傽
bool IsExcept;
// 僐乕僪曄姺
if (IsJisConvert) {
csSrc = csSrcData;
ConvSJisToJis();
csSrcData = csDst;
};
// UrlEncode
lngLength = csSrcData.GetLength();
strSrc = (LPCTSTR)csSrcData;
for (lngPos = 0; lngPos < lngLength; lngPos++) {
chSrc = *(strSrc + lngPos);
IsExcept = false;
if (strExcept != NULL) {
for (long lngPos = 0; *(strExcept + lngPos) != 0; lngPos++) {
if (*(strExcept + lngPos) == chSrc) {
IsExcept = true;
break;
};
};
};
if (('0' <= chSrc && chSrc <= '9')
|| ('a' <= chSrc && chSrc <= 'z')
|| ('A' <= chSrc && chSrc <= 'Z')
|| IsExcept) {
// 塸悢帤憡摉偺僐乕僪傑偨偼曄姺懳徾奜僐乕僪偼偦偺傑傑
csDstData += chSrc;
} else if (chSrc == ' ') {
// 僗儁乕僗偼'+'偵曄姺偡傞
csDstData += '+';
} else {
// 僄僗働乕僾('%')亄16恑悢昞帵偵抲偒姺偊傞
sprintf(strBuf, "%0.2X", (unsigned char)chSrc);
csDstData += "%";
csDstData += strBuf;
};
};
}//----------------------------------------------------------------------------
//
// 娭悢柤 : CUrlEncode::DeCode
//
// 婡擻 : URL僨僐乕僪
//
// 婡擻愢柧 : csSource偵懳偟偰URL僨僐乕僪張棟傪峴偄丄寢壥傪csCode偵弌椡偡傞丅
//
//----------------------------------------------------------------------------
void CUrlEncode::DeCode(bool IsMsgHeader, bool IsJisConvert)
{
long lngLength; // 僄儞僐乕僪暥帤楍(csCode)偺挿偝
long lngPos; // 張棟埵抲
char chSrc; // 張棟懳徾僐乕僪(1byte)
LPCTSTR strSrc; // 僄儞僐乕僪暥帤楍傊偺億僀儞僞
char *strEr; // strtoul梡僄儔乕弌椡
CString csHexCode; // 16恑昞婰
csSource.Empty();
lngLength = csCode.GetLength();
strSrc = (LPCTSTR)csCode;
for (lngPos = 0; lngPos < lngLength; lngPos++) {
chSrc = *(strSrc + lngPos);
if (chSrc != '%') {
// 僄僗働乕僾('%')偑側偄応崌偼偦偺傑傑捛壛丅
csSource += chSrc;
} else {
// 僄僗働乕僾('%')亄16恑悢->捠忢偺暥帤僐乕僪偵曄姺偡傞丅
if (lngPos + 2 < lngLength) {
csHexCode.Empty();
csHexCode += *(strSrc + (++lngPos));
csHexCode += *(strSrc + (++lngPos));
csSource += (unsigned char)strtoul(csHexCode, &strEr, 16);
if (*strEr != 0) {
throw(cderException);
return;
};
} else {
throw(cderException);
return;
};
};
};
if (IsJisConvert) {
csSrc = csSource;
ConvJisToSJis();
csSource = csDst;
};
}
HTTP: 2:Accept: */*
HTTP: 3:Accept-Language: zh-cn
HTTP: 4:Accept-Encoding: gzip, deflate
HTTP: 5:User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
HTTP: 6:Host:xxx.xxx.com.cn
HTTP: 7:Connection: Keep-Alive
然后再看看行不行,我感觉肯能不是编码的问题。
不过还是要谢谢你:)
除了发送出
HTTP:
HTTP: 1:GET /muser?user=selfuser&message=测试&destinationAddr=13600000000&messageSave= HTTP/1.1同时发送出
HTTP: 2:Accept: */*
HTTP: 3:Accept-Language: zh-cn
HTTP: 4:Accept-Encoding: gzip, deflate
HTTP: 5:User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
HTTP: 6:Host:xxx.xxx.com.cn
HTTP: 7:Connection: Keep-Alive
file =(CHttpFile*)p_http->OpenRequest(1,"\user?username="+loginname+"&_password="pwd);
file->AddRequestHeaders("Accept: */*");
file->AddRequestHeaders("Accept-Language: zh-cn");
file->AddRequestHeaders("Accept-Encoding: gzip, deflate");
file->AddRequestHeaders("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)");
file->SendRequest();