热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言easy,【EasyDL】C语言请求示例代码

此文给出的为C语言调用百度EasyDL的示例代码图片转base64请自行处理在用sprintf这个函数的时候把json数据格式化输入的时候要自己添加结束符其他语言调用336001错

此文给出的为 C语言调用百度EasyDL的示例代码 图片转base64请自行处理

在用sprintf这个函数的时候 把json数据格式化输入的时候 要自己添加结束符

其他语言调用336001错误解决方案或示例代码 http://aixiaoshuai.mydoc.io/?t=236073

C语言示例代码:

来源于热心开发者

#include

#include

#include

#include

#include

#include

#include

//图片的base64数据 不需要urlencode处理

const char * base64char = "";

unsigned long get_file_size(const char * path)

{

unsigned long filesize =-1;

struct stat statbuff;

if(stat(path,&statbuff) <0)

{

return filesize;

}

else

filesize &#61; statbuff.st_size;

return filesize;

}

char * base64_encode( const unsigned char * bindata, char * base64, int binlength )

{

int i, j;

unsigned char current;

for ( i &#61; 0, j &#61; 0 ; i

{

current &#61; (bindata[i] >> 2) ;

current &&#61; (unsigned char)0x3F;

base64[j&#43;&#43;] &#61; base64char[(int)current];

current &#61; ( (unsigned char)(bindata[i] <<4 ) ) & ( (unsigned char)0x30 ) ;

if ( i &#43; 1 >&#61; binlength )

{

base64[j&#43;&#43;] &#61; base64char[(int)current];

base64[j&#43;&#43;] &#61; &#39;&#61;&#39;;

base64[j&#43;&#43;] &#61; &#39;&#61;&#39;;

break;

}

current |&#61; ( (unsigned char)(bindata[i&#43;1] >> 4) ) & ( (unsigned char) 0x0F );

base64[j&#43;&#43;] &#61; base64char[(int)current];

current &#61; ( (unsigned char)(bindata[i&#43;1] <<2) ) & ( (unsigned char)0x3C ) ;

if ( i &#43; 2 >&#61; binlength )

{

base64[j&#43;&#43;] &#61; base64char[(int)current];

base64[j&#43;&#43;] &#61; &#39;&#61;&#39;;

break;

}

current |&#61; ( (unsigned char)(bindata[i&#43;2] >> 6) ) & ( (unsigned char) 0x03 );

base64[j&#43;&#43;] &#61; base64char[(int)current];

current &#61; ( (unsigned char)bindata[i&#43;2] ) & ( (unsigned char)0x3F ) ;

base64[j&#43;&#43;] &#61; base64char[(int)current];

}

base64[j] &#61; &#39;\0&#39;;

return base64;

}

int base64_decode( const char * base64, unsigned char * bindata )

{

int i, j;

unsigned char k;

unsigned char temp[4];

for ( i &#61; 0, j &#61; 0; base64[i] !&#61; &#39;\0&#39; ; i &#43;&#61; 4 )

{

memset( temp, 0xFF, sizeof(temp) );

for ( k &#61; 0 ; k <64 ; k &#43;&#43; )

{

if ( base64char[k] &#61;&#61; base64[i] )

temp[0]&#61; k;

}

for ( k &#61; 0 ; k <64 ; k &#43;&#43; )

{

if ( base64char[k] &#61;&#61; base64[i&#43;1] )

temp[1]&#61; k;

}

for ( k &#61; 0 ; k <64 ; k &#43;&#43; )

{

if ( base64char[k] &#61;&#61; base64[i&#43;2] )

temp[2]&#61; k;

}

for ( k &#61; 0 ; k <64 ; k &#43;&#43; )

{

if ( base64char[k] &#61;&#61; base64[i&#43;3] )

temp[3]&#61; k;

}

bindata[j&#43;&#43;] &#61; ((unsigned char)(((unsigned char)(temp[0] <<2))&0xFC)) |

((unsigned char)((unsigned char)(temp[1]>>4)&0x03));

if ( base64[i&#43;2] &#61;&#61; &#39;&#61;&#39; )

break;

bindata[j&#43;&#43;] &#61; ((unsigned char)(((unsigned char)(temp[1] <<4))&0xF0)) |

((unsigned char)((unsigned char)(temp[2]>>2)&0x0F));

if ( base64[i&#43;3] &#61;&#61; &#39;&#61;&#39; )

break;

bindata[j&#43;&#43;] &#61; ((unsigned char)(((unsigned char)(temp[2] <<6))&0xF0)) |

((unsigned char)(temp[3]&0x3F));

}

return j;

}

void encode(FILE * fp_in, FILE * fp_out)

{

unsigned char bindata[2050];

char base64[4096];

size_t bytes;

while ( !feof( fp_in ) )

{

bytes &#61; fread( bindata, 1, 2049, fp_in );

base64_encode( bindata, base64, bytes );

fprintf( fp_out, "%s", base64 );

}

}

void decode(FILE * fp_in, FILE * fp_out)

{

int i;

unsigned char bindata[2050];

char base64[4096];

size_t bytes;

while ( !feof( fp_in ) )

{

for ( i &#61; 0 ; i <2048 ; i &#43;&#43; )

{

base64[i] &#61; fgetc(fp_in);

if ( base64[i] &#61;&#61; EOF )

break;

else if ( base64[i] &#61;&#61; &#39;\n&#39; || base64[i] &#61;&#61; &#39;\r&#39; )

i --;

}

bytes &#61; base64_decode( base64, bindata );

fwrite( bindata, bytes, 1, fp_out );

}

}

FILE *fp;

//这个函数是为了符合CURLOPT_WRITEFUNCTION而构造的

//完成数据保存功能

size_t WriteData(void *ptr, size_t size, size_t nmemb, void *stream)

{

int written &#61; fwrite(ptr, size, nmemb, (FILE *)fp);

return written;

}

int postUrl()

{

CURL *curl;

CURLcode res;

char * imagedatapoint &#61; NULL;

char szJsonData[65535] &#61; {0};

sprintf(szJsonData,"{\"image\":\"%s\",\"top_num\":5}",imagedatapoint);//imagedatapoint 是base64编码好的图像数据编码函数上面有

char strCurlOpt_url[] &#61;"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/ncpsb?access_token&#61;24.6871ee410bf772d.......";

//等号后面换成你自己的access_token. 接口地址记得替换成自己的哦

if((fp&#61;fopen("/usr/local/x86_curl/1.txt","w"))&#61;&#61;NULL)

{

printf("fopen( /opt/1.txt) fail\n");

exit(1);

}

struct curl_slist * header &#61; NULL;

header &#61; curl_slist_append(header,"Content-Type: application/json;charset&#61;UTF-8");

if(NULL &#61;&#61; header)

{

printf("append is error\n");

exit(-1);

}

curl &#61; curl_easy_init();

if (curl)

{

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header);

curl_easy_setopt(curl, CURLOPT_URL,strCurlOpt_url); // 指定url

curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1L);

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);

curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);

curl_easy_setopt(curl, CURLOPT_POSTFIELDS,szJsonData);

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteData);

res &#61; curl_easy_perform(curl);

printf("%d %s\n",res, curl_easy_strerror(res));

curl_easy_cleanup(curl);

curl_slist_free_all(header);

}

fclose(fp);

return 1;

}

int main(void)

{

curl_global_init(CURL_GLOBAL_SSL);

postUrl();

}



推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
1237i
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有