我的代码向网站发送HTTP HEAD请求。然后该网站回复其信息。如何从回复的第一行中提取状态代码?状态代码是“HTTP / 1.0”之后的值,它是2xx或3xx。
代码:
#define BUF_LEN 2048
main(int argc, char *argv[])
{
int csd;
struct sockaddr_in server;
struct hostent *server_host;
int server_len;
int string_size;
short server_port;
char req_buffer[BUF_LEN];
char temp_buffer[BUF_LEN];
char receiveBuffer[BUF_LEN];
char resource_buffer[BUF_LEN];
int t;
if(argc!=2)
{
fprintf(stderr,"Usage: %s <website> \n",argv[0]);
exit(EXIT_FAILURE);
}
server_host=gethostbyname(argv[1]);
if (server_host == NULL)
{
herror("While calling gethostbyname()");
exit(EXIT_FAILURE);
}
csd=socket(PF_INET, SOCK_STREAM, 0);
if(csd<0)
{
perror("While calling socket()");
exit(EXIT_FAILURE);
}
server.sin_family=AF_INET;
memcpy(&server.sin_addr, server_host->h_addr_list[0], server_host->h_length);
server.sin_port = htons(80);
server_len=sizeof(server);
t = connect(csd, (struct sockaddr *) &server, server_len);
if (t<0)
{
perror("while connecting()");
exit(EXIT_FAILURE);
}
else
{
printf("connected to server\n\n");
}
sprintf(temp_buffer, "HEAD / HTTP/1.0\r\n");
strcpy(req_buffer, temp_buffer);
sprintf(temp_buffer, "HOST: %s\r\n", argv[1]);
strcat(req_buffer, temp_buffer);
sprintf(temp_buffer, "\r\n");
strcat(req_buffer, temp_buffer);
printf(req_buffer);
write(csd, req_buffer, strlen(req_buffer));
read(csd, receiveBuffer, BUF_LEN);
printf(receiveBuffer);
close(csd);
}
答案 0 :(得分:3)
var a=10;
var b=20;
$.post('abc.php',{param1:a,param2:b},function(data){
//here action on data returned or anything
});
答案 1 :(得分:0)
库函数sscanf()。例如:
string the_string = "foo -3.6 fum dum 17";
sscanf(the_string, "foo %f fum dum %d", &f, &i);
我无法做出具体的例子,因为我不明白如何建立指令
答案 2 :(得分:0)
您可以使用curl.h
#include <curl/curl.h>
int main(void) {
CURL *curl = curl_easy_init();
if (curl) {
CURLcode res;
FILE *f = fopen("/dev/null", "wb");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, f);
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
if (res == CURLE_OK) {
long response_code;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
printf("response_code %ld", response_code);
}
curl_easy_cleanup(curl);
}
return 0;
}
测试
gcc main.c -lcurl
./a.out
response_code 200⏎