linux http编程,linux c http编程 如和写post格式!

http协议中这样写着:GET 请求获取Request-URI所标识的资源。 POST 在Request-URI所标识的资源后附加新的数据。

在网上查到的信息:POST   在一般情况下应该注意2点

一是:     content-length:   一定要跟POST中正文长度字节数相等,在你这里就是strlen("name1=value1&name2=value2")

二是:   Content-Type:   在给CSDN发帖子时候一定要是   application/x-www-form-urlencoded

一下代码是我在网上搜索的,linux下可以正常运行(需要稍作修改)

#define DestIp "xx.xx.xx.xx"

#define DestPort 9000

#define Req "GET /index.html HTTP/1.1rnHost: xx.xx.xx.xxrnConnection: Closernrn"

#define ReqLen sizeof(Req)

int main(int argc, char *argv[]) {

ssize_t i;

int nRequestLen;

char strResponse[BUFSIZE]={0};

char strRequest[BUFSIZE]={0};

int sockfd, numbytes;

struct sockaddr_in dest_addr; /* connector's address information */

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

perror("socket");

exit(1);

}

dest_addr.sin_family = AF_INET; /* host byte order */

dest_addr.sin_port = htons(DestPort); /* short, network byte order */

dest_addr.sin_addr.s_addr = inet_addr(DestIp);

/* Create and setup the connection */

if (connect(sockfd, (struct sockaddr *)&dest_addr,sizeof(struct sockaddr)) == -1) {

perror("connect");

exit(1);

}

/* Send the request */

strncpy(strRequest, Req,ReqLen);

nRequestLen = ReqLen;

if (write(sockfd,strRequest,nRequestLen) == -1) {

perror("write");

exit(1);

}

/* Read in the response */

while(1) {

i = read(sockfd,strResponse,BUFSIZE-1);

if(0 >= i){

break;

}

strResponse[i]='';

printf(strResponse);

}

/* Close the connection */

close(sockfd);

}

当我要用post方法时,红色部分怎么写啊?谢谢。

|

楼主用抓包工具随便抓一个HTTP的包就知道了

|

我也遇到了类似的问题,未果

顶一下

|

和get一样,get后面跟的东西你付给了一个字符串,post也一样,只不过post后面跟的东西多,用宏不太好,可以用strcpy或memcpy。

get请求有数据部分吗?数据部分就是要上传的数据,post因为要提交信息,所以有数据部分。

|

这只是HTTP请求头,GET方式数据是放在请求头里一并发送的,POST方式是另外发送的,参考我前面给你的回帖,第一步,发送HTTP请求头,第二步,发送带有这类标志-----------------------------7d938a660866

Content-Disposition: form-data; name="FILE1"; filename="aaa.txt"

Content-Type: application/octet-streamrnrn这里放你的数据,数据最后再加一个-----------------------------7d938a660866--,再具体的,你查一下吧,以前做过这个,忘记了

|

推荐lz用wireshark抓包看一下再把相应的替换即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值