文档章节

使用 curl 调接口时需要注意事项

宇哲不犹豫
 宇哲不犹豫
发布于 2015/10/13 11:05
字数 324
阅读 614
收藏 2

1、在调用时需要对各个参数进行 urlencode;

2、注意 header 参数,首先我们使用 postman 工具调用一下这个接口,并获取其 request 的 header 将有用的 header 用起来(多试几次);

3、注意不同版本的 php 文件上传是需要的配置。

代码分析

/**
 * 注意:1、参数除了文件都要 urlencode 一下;2、注意header;3、curl_file_create 函数
 * @param $File  文件路径
 * @param int $Level
 * @param string $convertType
 * @return bool
 */
public static function file2jpeg($File,$Level = 2,$convertType = "GHOSTSCRIPT" ){
    $FileName = urlencode(basename($File));
    $url = "http://******";
    $curl = \Request::forge($url, 'curl');
    \Fuel\Core\Log::debug("url1 = [ $url ]");
    // 有用的 header
    $header = array (
        "User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36",
    );
    // 所需的参数
    $field = array(
        'File' => Service_Util::curl_file_create($File),
        'Level' => urlencode($Level),
        "convertType"=>urlencode($convertType),
        "FileName" => urlencode($FileName)
    );
    \Fuel\Core\Log::debug("url2 = [ $url ]");
    // 配置
    $curl->set_options(array(
        CURLOPT_RETURNTRANSFER=>1,
        CURLOPT_POST=>true,
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_POSTFIELDS=>$field,
        CURLOPT_INFILESIZE=>filesize($File)
    ));
    $result = $curl->execute();
    $dir = \Fuel\Core\Config::get('file_store_dir');
    $path =  Service_Util::getName($dir."/".$field['FileName']);
    file_put_contents($path.".zip",$result);
    return true;
}

/**
 * 去除文件后缀
 * @param $fileName 文件
 */
public static function getName($fileName){
    $index = strrpos($fileName,".");
    if ($index>0){
        return substr($fileName,0,$index);
    }
    return $fileName;
}
/**
 * curl 文件上传兼容函数
 * @param $filename
 * @param string $contentType
 * @return CURLFile|string
 */
public static  function curl_file_create($filename, $contentType = '') {
    if (function_exists('curl_file_create')) {
        return curl_file_create($filename, $contentType, basename($filename));
    }
    $value = "@{$filename};filename=" . basename($filename);
    if ($contentType) {
        $value .= ';type=' . $contentType;
    }
    return $value;
}



© 著作权归作者所有

共有 人打赏支持
宇哲不犹豫
粉丝 0
博文 44
码字总数 18225
作品 0
汕尾
程序员
Rolling cURL: PHP并发最佳实践

在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, 为了提高性能, 可以采用cURL提供的curlmulti*族...

鉴客
2012/06/19
4.2K
10
libcurl库介绍

libcurl库是一个实现了各种客户端协议的网络编程库。目前它支持12种以上的协议,包括 FTP、HTTP、Telnet以及其他安全变体。 如果您有 10 年以上的脚本语言经验,您就会注意到它们的标记有很大...

鉴客
2010/05/18
5.6K
4
使用 cURL 和 libcurl 通过 Internet 进行对话

cURL 是一个命令行工具,可以对文件传输使用许多协议,包括 HTTP、FTP、Secure Copy (SCP)、Telnet 等等。但是,除了可以用命令行通过 Internet 与端点对话外,还可以使用 libcurl 编写简单或...

红薯
2009/11/02
926
0
PHP Curl并行轮转请求库--CurlFuture

CurlFuture : PHP Curl并行轮转请求库 multicurl系列方法是提高php请求后端http接口的一种途径。但是直接使用的话,存在几方面问题: 部分版本的curl扩展有bug,需要用特定的方式来调用(Ro...

coooold
2016/03/09
507
0
linux c libcurl的简单使用

curl是Linux下一个非常著名的下载库,通过这个库,可以很简单的实现文件的下载等操作。 看一个简单的例子: #include <curl/curl.h> include <stdio.h> include <string.h> CURL *curl;CURLc......

mickelfeng
2015/10/12
58
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 种族不同,禁止交往

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《苏菲小姐》- 鱼果 《苏菲小姐》- 鱼果 手机党少年们想听歌,请使劲儿戳(这里) @貓夏:下大雨 正是睡觉的好时候 临睡前...

小小编辑
今天
226
6
Python 搭建简单服务器

Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文...

代码打碟手
今天
1
0
Confluence 6 删除垃圾内容

属性(profile)垃圾 属性垃圾的定义为,一个垃圾用户在 Confluence 创建了用户,但是这个用户在自己的属性页面中添加了垃圾 URL。 如果你有很多垃圾用户在你的系统中创建了属性,你可以使用...

honeymose
今天
1
0
qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
今天
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部