就是一個簡單的訪問網路的程式,visiturllen是visiturl的長度,如果發現不是很長,就用Get方法,如果很長,就用POST方法。
用到的變數
int visiturllen;
ThreadMsg* pGetTempMsg = NULL;
static int errornum = 0;
static int nDataTxtNum = 0;
HANDLE tTempFile = INVALID_HANDLE_VALUE;
unsigned long tReadWriteOkSize = 0;
AnsiString txtpath, txtname;
代碼如下:
if (visiturllen > 240) {
visiturlnum = visiturl.Pos("php?");
if (visiturlnum) {
visiturladdr = visiturl.SubString(1, visiturlnum + 2);
visiturldata = visiturl.SubString(visiturlnum + 4, visiturllen - visiturlnum - 3);
if (nDataTxtNum == 0) {
txtname = "data0.txt";
nDataTxtNum = 1;
} else {
txtname = "data1.txt";
nDataTxtNum = 0;
}
txtpath = ExtractFilePath(Application->ExeName) + txtname;
if(INVALID_HANDLE_VALUE != (tTempFile = CreateFile(txtpath.c_str(), GENERIC_READ |GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, 0))) {
WriteFile(tTempFile, visiturldata.c_str(), visiturllen - visiturlnum - 3, &tReadWriteOkSize, NULL);
CloseHandle(tTempFile);
}
Form1->NMHTTP1->OutputFileMode = true;
Form1->NMHTTP1->Post(visiturladdr, txtpath.c_str());
} else {
Form1->NMHTTP1->Get(visiturl);
}
} else {
Form1->NMHTTP1->Get(visiturl);
}
我用Get方法,發現如果visiturllen太長,不會報錯,但傳遞給服務器的資訊會被截取一段,導致引數不完整。
我用POST方法,我將php?后面的引數內容寫到data0.txt或者data1.txt中,提示下列錯誤。

另外,我發現如果visiturllen不是很長,用POST方法也沒有問題。
所以我不清楚是NMHTTP的問題,還是服務器的問題,如果是服務器的問題,要怎么修改php.ini?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90248.html
標籤:網絡及通訊開發
