本文概述:
在当下的各种应用中,在web方面,很多功能会经常使用到post以及getweb方法。
其中有这样一种情况,在我们的产品或者项目中,供应商提供了web的应用界面,可以控制,但是我们需要将这样的应用做到自己的app中,这样的话,如果获得web功能对应url、post数据、以及模拟方法成为关键。
本文将简要介绍这种抓包web数据以及模拟post、get方法。本文出自csdn-固本培元--leoluopy@gmail.com。
开始:
wireshark抓包
在抓取到如上图信息后,展开Hypertext Transfer Protocl 以及 Line-based text data.
如下图所示。你就可以看到对应的url以及post的真实数据。他们就是我们下文需要模拟发送的地址以及模拟数据了。
下载编译curl,编写模拟函数
仅仅抓到数据包以及获取对应的url地址还不足够,我们还需要得到对应的模拟方法。目前参考方法很多。有Qt的网络库,有MFC对应的http接口,还有很多对应方法。就笔者而言,认为linux开源组织的curl一套方案,简单高效,可移植性高。因此选择了这种方法。如下,是笔者封装的curl发送post方法的接口。
当然了,在这之前,你需要下载curl库,编译他,然后在你的工程中载入curl库以及头文件。都是很简单的过程,这里不再阐述。祝你好运。本文出自csdn-固本培元。
#include <string.h>
#include <stdio.h>
#include <curl/curl.h>
int CurlPost(const char* url,const char* usr,const char *password,const char* data)
{
CURL *curl;
CURLcode res;
char auth[200];memset(auth,0,200);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL,url );
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");
strcat(auth,usr);
strcat(auth,":");
strcat(auth,password);
curl_easy_setopt(curl, CURLOPT_USERPWD, auth);
/* Now specify the POST data */
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,data );
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK){
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}