Php 恢复Adserver XML_RPC发送图像内容
我正在尝试通过xml_rpc发送照片,如下所示:Php 恢复Adserver XML_RPC发送图像内容,php,image,xml-rpc,Php,Image,Xml Rpc,我正在尝试通过xml_rpc发送照片,如下所示: $data = array( 'phpads55deb65dd5ca45.43027895', 'aImage' => array( 'filename' => $file['aImage']['name'], 'content' => file_get_contents($file['aImage']['tmp_name']), ), 'campaignId' =
$data = array(
'phpads55deb65dd5ca45.43027895',
'aImage' => array(
'filename' => $file['aImage']['name'],
'content' => file_get_contents($file['aImage']['tmp_name']),
),
'campaignId' => 1,
'storageType' => 'web'
);
$this->client = new Client('http://example.com/api/v2/xmlrpc/');
$this->client->call('ox.addBanner', $data);
$filename = $file['aImage']['tmp_name'];
$data = file_get_contents($filename);
$base64 = base64_encode($fileData);
$data = array(
'phpads55deb65dd5ca45.43027895',
'aImage' => array(
'filename' => $filename,
'content' => $base64
),
'campaignId' => 1,
'storageType' => 'web'
);
我通过Fiddler收到请求,显示如下:
POST http://example.com/api/v2/xmlrpc/ HTTP/1.1
Host: example.com
Connection: close
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Content-Length: 771
Accept: text/xml
User-Agent: Zend_XmlRpc_Client
奥克斯·阿德班纳
phpads55deb65dd5ca45.43027895
活动编号1
横幅名称
Khgjhj
目标
文件名
logo.png
内容
�巴布亚新几内亚
;
评论
DFGDFGDFG
存储类型
网状物
正如您所看到的,请求中没有完整的图像。有什么问题?我测试了fread
而不是file\u get\u content
,但没有区别。XML解析器发送此错误:
XML错误:第2行的字符无效
不能在XML响应中嵌入这样的二进制内容。您应该考虑将二进制图像编码为基64字符串的基64。您可以这样做:
$data = array(
'phpads55deb65dd5ca45.43027895',
'aImage' => array(
'filename' => $file['aImage']['name'],
'content' => file_get_contents($file['aImage']['tmp_name']),
),
'campaignId' => 1,
'storageType' => 'web'
);
$this->client = new Client('http://example.com/api/v2/xmlrpc/');
$this->client->call('ox.addBanner', $data);
$filename = $file['aImage']['tmp_name'];
$data = file_get_contents($filename);
$base64 = base64_encode($fileData);
$data = array(
'phpads55deb65dd5ca45.43027895',
'aImage' => array(
'filename' => $filename,
'content' => $base64
),
'campaignId' => 1,
'storageType' => 'web'
);
值格式不正确。我不得不改变这条线路
'content' => file_get_contents($file['aImage']['tmp_name']),
到
哪个需要导入这个
use Zend\XmlRpc\Value\Base64;
我也测试过这个。没用!问题是远程服务器不使用base64。关于嵌入二进制内容,您完全正确。@Abadis您的意思是不能对字符串进行编码?或者为什么不起作用?有base64功能。所以它似乎应该支持base 64编码?@Abadis编码时?也许你的文件不是正确的图像?@Abadis他们说这不是一个bug,但你需要添加base64格式的数据。答案不完全一样吗?