首页 > php教程 > php手册 > 正文

PHP语言访问REST API上传图片的解决方案

php中文网
发布: 2016-06-06 20:09:22
原创
1261人浏览过

最近在开发一个基于https协议的restful api,在为客户写demo的时候遇到一小点问题,由于php的使用经验不足,在写php语言的客户端时卡壳了一会,主要遇到的问题是: 如何使用PHP语言访问REST API上传图片? 一般理解先将图片做base64编码,然后将请求json格式

最近在开发一个基于https协议的restful api,在为客户写demo的时候遇到一小点问题,由于php的使用经验不足,在写php语言的客户端时卡壳了一会,主要遇到的问题是:

如何使用PHP语言访问REST API上传图片?

一般理解先将图片做base64编码,然后将请求json格式化,通过HTTPS POST到后端服务器,结果我的后端服务报错含有非法base64字符\,用PHP的stripslashes转义上传成功。

总结一下,其实技术上遇到问题会很多,为什么牛人、老手可以快速解决,而新人往往需要更多时间或请教别人。主要在于两点:

1、耐心。遇到问题先通过搜索引擎查找,不要一上来就抱着着急或者消极的态度。

立即学习PHP免费学习笔记(深入)”;

盘古大模型
盘古大模型

华为云推出的一系列高性能人工智能大模型

盘古大模型 207
查看详情 盘古大模型

2、手段。日志,debug,stacktrace,追踪代码都是可以利用的手段,记住没有无缘无故的问题,出现了问题,99%都是自己使用的问题。

3、洞察力。这就是需要经验的辅助了,如何缩小问题的scope?如何快速定位问题的root cause?如何找出有效解决问题的手段都是需要积累的。

啰嗦了这么半天直接上代码了:)

class Api_Client_Core {
 
	private $url;
 
	private $ch;
 
	public function __construct($serviceName) {
		$this->url = 'http://api.test.com' . $serviceName;
		$this->ch = curl_init($this->url);
		curl_setopt($this->ch, CURLOPT_CUSTOMREQUEST, 'POST');
		curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, true); //开始https支持
		curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, true);
		curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($this->ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
	}
 
	public function post($request) {
		// Show service definition
		print('----------service url-----------');
		print_r($this->getUrl());
		print('----------service request json-----------');
		print_r($request);
 
		curl_setopt($this->ch, CURLOPT_POSTFIELDS, $request);
 
		$result = curl_exec($this->ch);
 
		return $result;
	}
 
	public function getUrl() {
		return $this->url;
	}
 
}
 
 
class ProfileAddService extends Api_Client_Core {
	public function __construct() {
		parent::__construct('/profile/add');
	}
}
 
// New service
$service = new ProfileAddService();
 
// New request
$file = '960_90.jpg';
$image = file_get_contents($file);
$base64image = base64_encode($image);
 
// Call service
$output_response = $service->post(stripslashes(json_encode($base64image)));
 
// Print response
print_r($output_response);
登录后复制

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号