http 回應頭的悶事

 2023-12-25 阅读 26 评论 0

摘要:在編碼過程中一點小的不注意可能讓幾天睡不著覺! 此事記錄一來警戒自己每事必認真,二來給遇到些問題的同學你一些借鑒 前幾天在寫一個關于http下載的一個模塊,下載地址也是從網絡上http post后從回應頭里面讀出來參數.根據需求寫完代碼之后我把從參數讀后TRACE到輸出窗口,然后
在編碼過程中一點小的不注意可能讓幾天睡不著覺!
此事記錄一來警戒自己每事必認真,二來給遇到些問題的同學你一些借鑒
前幾天在寫一個關于http下載的一個模塊,下載地址也是從網絡上http post后從回應頭里面讀出來參數.根據需求寫完代碼之后我把從參數讀后TRACE到輸出窗口,然后我從窗口copy數據到ie的地址欄中進行一次get操作結果OK.于是copy到的數據做為http下載模塊的參數.一切也OK.呵呵,到兩個模塊合并測試的時候,把post后取得的參數直接傳到下載模塊,結果返回的是"
400 Bad request ".真是奇怪了怎么會是地址有錯呢?可是TRACE出來的地址沒有什么問題呀.
1.我判斷是否編碼出問題了:因從http 頭返回的參數是UTF8編碼.于是我把UTF8轉成國標碼后,再次測試還是同樣的問題.
2.我把TRACE出來字符串與編碼轉換后的字符一下比較.
如下:
TRACE(strReturn);//打到輸出
CString str = _T("TRACESTR");(從輸出窗口copy)
if(str == strReturn)
{
TRACE("==");
}
結果還是不等()
沒辦法我只好把這個參數通POST到服務器上,結果服務器一解析發現了一個問題
在參數的最后多了一個"/r"
這個我才明白過來.原來在取參數返回頭參數的時候出現了問題.
因為返回頭的格式是
XXXXX: YYYYYYYYYYY/r/n
我當初得到YYYYYYYYYYY的方法是取得"XXXX: "后面的所有字符,于是得到了YYYYYYYYY/r/n.
CString str1 = "YYYYYYYYYY";
CString str2 = "YYYYYYYYYY/r/n";
str1,與str2是不一樣的字符串但是TRACE出來時str2只比str1多一個回車,要是沒有認真分析是不易發現的.
最終經過修改把"/r/n"處理掉,一切又OK了.呵呵.
所以以后在寫測試代碼時要多注意這些細節問題,不然模塊進行綜合測試的時候會花費更多的時間.
此事浪費了我一天的調試時間,我記之.
?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194850.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息