请问NMHTTP的POST和GET的参数长度是多少?为何被截取或报错?

zyxdna 2015-11-10 10:44:03
就是一个简单的访问网络的程序,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?
...全文
445 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧