怎么用C实现Http POST功能向Http服务器上传文件

怎么用C实现Http POST功能向Http服务器上传文件,第1张

文件可以使用sendfile直接过去

比如刚开始是报文头部结束\r\n\r\n直接write就可以

然后文件数据可以直接sendfile处理,

也可以

#define BUFSIZE 8196

while(read(fd,buf,BUFSIZE)>0){

write(...)

}

CONTENT-LENGTH是报文头结束\r\n\r\n之后的字节总数

CHttpFile

CHttpConnection

CInternetSession

MFC中使用这个几个类来实现HTTP协议的数据传输。

具体使用方法看MSDN吧,网上搜索也能搜到例子,我就不贴代码了。

虽然在JDK的java.net包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。以下是简单的post例子:Stringurl="bbslogin2.php"PostMethodpostMethod=newPostMethod(url)//填入各个表单域的值NameValuePair[]data={newNameValuePair("id","youUserName"),newNameValuePair("passwd","yourPwd")}//将表单的值放入postMethod中postMethod.setRequestBody(data)//执行postMethodintstatusCode=httpClient.executeMethod(postMethod)//HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发//301或者302if(statusCode==HttpStatus.SC_MOVED_PERMANENTLY||statusCode==HttpStatus.SC_MOVED_TEMPORARILY){//从头中取出转向的地址HeaderlocationHeader=postMethod.getResponseHeader("location")Stringlocation=nullif(locationHeader!=null){location=locationHeader.getValue()System.out.println("Thepagewasredirectedto:"+location)}else{System.err.println("Locationfieldvalueisnull.")}return}详情见:/developerworks/cn/opensource/os-httpclient/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7958952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存