HTTP post请求传参数(大数据)问题

yule253456724 2011-11-28 11:02:10
请求一下发送HTTP post请求时候 带的参数是从文件中读取的比较大时候是怎么post 的啊
			sprintf(request, "POST %s HTTP/1.1\r\nAccept:*/*\r\nAccept-Language:zh-cn\r\nHost:%s:%d\r\nContent-Type:application/x-www-form-urlencoded\r\nContent-Length:%d\r\n\r\nobject=%s&subject=%s&file=%s\r\n\r\n", url ,host_addr, portnumber,len,object,subject,buffer_read);

例如从文件中每次读取4K数据,传到file参数中,文件大于4K,请求是如何post的呢
是每次都4k后,由服务器自己拼接数据吗 还是 什么方式啊
不知道我说的明不明确
...全文
902 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yule253456724 2011-11-30
  • 打赏
  • 举报
回复
已经解决 结贴
yule253456724 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq120848369 的回复:]
不知所云。。。
[/Quote]

就是六楼说的意思
yule253456724 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kevin_zcwen 的回复:]
准不对,一般是发一次请求头
告诉接收端你要发的数据长度以及类型什么的
然后就是按着你要发的把数据组织起来进行发送
[/Quote]
那假如数据几十M 也不能一次发送吧 那怎么发送呢?
弱水垂钓 2011-11-29
  • 打赏
  • 举报
回复
准不对,一般是发一次请求头
告诉接收端你要发的数据长度以及类型什么的
然后就是按着你要发的把数据组织起来进行发送
qq120848369 2011-11-28
  • 打赏
  • 举报
回复
不知所云。。。
aaseh 2011-11-28
  • 打赏
  • 举报
回复
不对









1
yule253456724 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]
为什么非得一个sprintf。。。。愁死了,你自己慢慢strcat上去不行么。。memcpy,strcpy,strncpy,爱咋地咋地啊。
[/Quote]
呵呵 先不讨论sprintf还是strcat
我写的也是能post 的
现在主要是这个问题:

while( nRead = fread( buffer_read, sizeof(unsigned char),(sizeof(buffer_read)-1), pFileS ) )
{
memset(buffer_read + nRead,0,sizeof(buffer_read) - nRead);
int len=0;
for (len;len<sizeof(buffer_read);len++)
{
if (buffer_read[len]=='\0')
{
break;
}
}
int lengh=(strlen(object)+strlen(subject)+len+22);
sprintf(request, "POST %s HTTP/1.1\r\nAccept:*/*\r\nAccept-Language:zh-cn\r\nHost:%s:%d\r\nContent-Type:application/x-www-form-urlencoded\r\nContent-Length:%d\r\nConnection:Close\r\n\r\nobject=%s&subject=%s&file=%s\r\n\r\n", url ,host_addr, portnumber,lengh,object,subject,buffer_read);
printf("%s", request);/*准备request,将要发送给主机*/

/*发送http请求request*/
send = 0;totalsend = 0;
nbytes=strlen(request);
while(totalsend < nbytes)
{
send = write(sockfd, request + totalsend, nbytes - totalsend);
if(send==-1) {printf("send error!%s\n", strerror(errno));exit(0);}
totalsend+=send;
printf("%d bytes send OK!\n", totalsend);
}
}

就是从文件读取多次是这样发送的吗 这点不解
每次4K 大于4K的文件就打印乱的
post 4K
post 4K



直到post完数据再接收 这样不对
请高手指点
qq120848369 2011-11-28
  • 打赏
  • 举报
回复
为什么非得一个sprintf。。。。愁死了,你自己慢慢strcat上去不行么。。memcpy,strcpy,strncpy,爱咋地咋地啊。
yule253456724 2011-11-28
  • 打赏
  • 举报
回复
没有高手帮助解答一下啊

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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