c++post

作者: NoFacePeace | 来源:发表于2017-11-11 04:13 被阅读0次
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<openssl/pem.h>
#include<openssl/bio.h>
#include<openssl/evp.h>
#include<openssl/buffer.h>
#include<openssl/md5.h>
#include<curl/curl.h>
#define POSTURL "http://www.seemmark.com/external-api/external/captcha/v3"
using namespace std;
char * base64Encode(const char *buffer, int length)
{
    BIO *bmem = NULL;
    BIO *b64 = NULL;
    BUF_MEM *bptr;

    b64 = BIO_new(BIO_f_base64());
   // BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
    bmem = BIO_new(BIO_s_mem());
    b64 = BIO_push(b64, bmem);
    BIO_write(b64, buffer, length);
    BIO_flush(b64);
    BIO_get_mem_ptr(b64, &bptr);
    BIO_set_close(b64, BIO_NOCLOSE);

    char *buff = (char *)malloc(bptr->length + 1);
    memcpy(buff, bptr->data, bptr->length);
    buff[bptr->length] = 0;
    BIO_free_all(b64);

    return buff;
}

int main(){
    
    int size;
    ifstream file("image.png",ios::in|ios::binary|ios::ate);
    size = file.tellg();
    file.seekg(0,ios::beg);
    char buffer[size];
    file.read(buffer,size);
    file.close();
//  for(int i = 0;i < size; i++){
//      printf("%c",buffer[i]);
//  }
//  cout<<size<<endl;
    char *buff = base64Encode(buffer,size);
//  int i = 0;
//  while(buff[i++]!= '\0')
//      printf("%c",buff[i]);
//  cout<<i<<endl;
    string key = "58f0a437e7798958a686bb33";
    string codoID = "1001adf11eefe";
    string userId = "1234";
    string codeID = "codeID=" + codeID;
    string image = buff;
    image = "image=" + image;
    userId = "userId=" + userId;
    string param = codeID + "&" + image + "&" + userId + "&" +key;
    MD5_CTX ctx;
    unsigned char md[16];
    char bufs[33] = {'\0'};
    char tmp[3] = {'0'};
    int i;
    const char *ps = param.c_str();
    MD5_Init(&ctx);
    MD5_Update(&ctx, ps, param.length());
    MD5_Final(md, &ctx);

    for(i = 0; i < 16;i++)
    {
        sprintf(tmp, "%02X", md[i]);
        strcat(bufs, tmp);
    }
//  printf("%s\n",bufs);
    string sign = bufs;
    param = param +"&sign=" + sign;
    CURL *curl;
    CURLcode res;
    struct curl_slist *http_header = NULL;
    curl = curl_easy_init();   
    curl_easy_setopt(curl, CURLOPT_URL,POSTURL );   
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, param);   
   // curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);   
   // curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);   
    curl_easy_setopt(curl, CURLOPT_POST, 1);   
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);   
    curl_easy_setopt(curl, CURLOPT_HEADER, 1);   
    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);   
   // curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/Users/zhu/CProjects/curlposttest.cookie");   
    res = curl_easy_perform(curl);   
    curl_easy_cleanup(curl); 
    return 0;
}

相关文章

网友评论

      本文标题:c++post

      本文链接:https://www.haomeiwen.com/subject/erqwmxtx.html