调用 Pho.to 时出错 API
Error calling Pho.to API
我正在尝试调用 Pho.to API 来编辑照片,但每次我尝试 POST 时都会遇到同样的错误。我已经对我的 app_id
和 key
进行了双重和三次检查,但我无法弄清楚我做错了什么。我目前正在使用 ARC Chrome 扩展来调用此 api,所以我什至还没有开始编写该部分的代码,我只是想从 api 以确保它能正常工作。
我尽可能按照他们文档中的说明进行操作。 link 供参考:http://developers.pho.to/documentation/sending-requests
这是我的 api 电话:
http://opeapi.ws.pho.to/addtask?APP_ID=<my-app-id>&KEY=<my-key>&SIGN_DATA=910ceb5bdb238b9248a34cce8b29ba64d5f239df
这是我得到的回复(不要被 200 欺骗):
Status: 200 OK
<?xml version="1.0" ?>
<image_process_response>
<status>SecurityError</status>
<err_code>614</err_code>
<description>Error in POST parameters: one or more parameters (DATA , SIGN_DATA or APP_ID) are empty</description>
</image_process_response>
这是我用来为 SIGN_DATA
创建 SHA1 的 PHP 代码:
<?php
echo hash_hmac('SHA1', '<image_process_call><lang>en</lang><image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url><methods_list><method order="1"><name>desaturation</name></method><method order="2"><name>cartoon</name><params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params></method></methods_list><result_format>png</result_format><result_size>600</result_size></image_process_call>','<my-key>');
?>
这是上面的 xml,为便于阅读而格式化:
<image_process_call>
<lang>en</lang>
<image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url>
<methods_list>
<method order="1">
<name>desaturation</name>
</method>
<method order="2">
<name>cartoon</name>
<params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params>
</method>
</methods_list>
<result_format>png</result_format>
<result_size>600</result_size>
</image_process_call>
如有任何帮助,我们将不胜感激。提前致谢!
所以我弄清楚出了什么问题。这是我针对可能 运行 遇到与此 api 类似问题(无论平台如何)的任何其他人的详细解决方案:
部分问题(如@u_mulder 指出的那样)是 DATA
需要与 SIGNED_DATA
一起发送,以便 SHA1 可以在另一端解码.
解决我问题的另一部分是删除 <lang>en</lang>
。无论出于何种原因,它都会返回 Error 613: Invalid SIGN_DATA parameter.
无论如何,英语是默认语言,因此没有必要。
所以在解决这些问题之后,这是我的最终结果 url:
http://opeapi.ws.pho.to/addtask/?app_id=<my-app-id>&key=<my-key>9&sign_data=e456c393d11797c1a2945a85dd49ba2208cc66de&data=%3Cimage_process_call%3E%3Cimage_url+order%3D%221%22%3Ehttp%3A%2F%2Fwww.heroesandheartbreakers.com%2Fimages%2Fstories%2Fblogarticles%2F2016%2FJanuary2016%2FTV-Recap-Arrow-4x11-Olicity-is-home-470.jpg%3C%2Fimage_url%3E%3Cmethods_list%3E%3Cmethod+order%3D%221%22%3E%3Cname%3Ecartoon%3C%2Fname%3E%3Cparams%3Efill_solid_color%3D1%3Btarget_color%3D%28255%2C255%2C255%29%3Bborder_strength%3D20%3Bborder_width%3D1%3C%2Fparams%3E%3C%2Fmethod%3E%3C%2Fmethods_list%3E%3Cresult_format%3Epng%3C%2Fresult_format%3E%3Cresult_size%3E1500%3C%2Fresult_size%3E%3C%2Fimage_process_call%3E
请注意 url 已编码。这可能是必要的,也可能不是必要的,为了安全起见,我只是对其进行了编码。
这个returns:
<?xml version="1.0" ?>
<image_process_response>
<request_id>010afc13-6bba-44dd-b278-4f3bd1e41946</request_id>
<status>OK</status>
<description />
<err_code>0</err_code>
</image_process_response>
我现在可以使用 request_id
来获取编辑图像的 url:
http://opeapi.ws.pho.to/getresult?request_id=010afc13-6bba-44dd-b278-4f3bd1e41946
其中returns以下xml:
<image_process_response>
<request_id>010afc13-6bba-44dd-b278-4f3bd1e41946</request_id>
<status>OK</status>
<result_url>http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</result_url>
<result_url_alt>http://worker-images.ws.pho.to.s3.amazonaws.com/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</result_url_alt>
<nowm_image_url>http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</nowm_image_url>
</image_process_response>
所以最终编辑图片的url是http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png(我相信link会在24小时后过期)
大功告成!
如果您想了解我是如何在一个简单的 Android 应用程序中实现此 api 的,请查看 github link:https://github.com/youravgjoe/ColoringPageGenerator
之前:
之后:
对我来说,错误已通过 (A) 确保使用 SHA1 而不是 SHA256(我自己的错)和 (B) 由于某种原因 sign_data 值必须小写。
删除 XML 中的所有新行 (Enter),然后重试。
<image_process_call>
<lang>en</lang>
<image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url>
<methods_list>
<method order="1">
<name>desaturation</name>
</method>
<method order="2">
<name>cartoon</name>
<params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params>
</method>
</methods_list>
<result_format>png</result_format>
<result_size>600</result_size>
</image_process_call>
到
<image_process_call><lang>en</lang><image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url><methods_list><method order="1"><name>desaturation</name></method><method order="2"><name>cartoon</name><params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params></method></methods_list><result_format>png</result_format><result_size>600</result_size></image_process_call>
我正在尝试调用 Pho.to API 来编辑照片,但每次我尝试 POST 时都会遇到同样的错误。我已经对我的 app_id
和 key
进行了双重和三次检查,但我无法弄清楚我做错了什么。我目前正在使用 ARC Chrome 扩展来调用此 api,所以我什至还没有开始编写该部分的代码,我只是想从 api 以确保它能正常工作。
我尽可能按照他们文档中的说明进行操作。 link 供参考:http://developers.pho.to/documentation/sending-requests
这是我的 api 电话:
http://opeapi.ws.pho.to/addtask?APP_ID=<my-app-id>&KEY=<my-key>&SIGN_DATA=910ceb5bdb238b9248a34cce8b29ba64d5f239df
这是我得到的回复(不要被 200 欺骗):
Status: 200 OK
<?xml version="1.0" ?>
<image_process_response>
<status>SecurityError</status>
<err_code>614</err_code>
<description>Error in POST parameters: one or more parameters (DATA , SIGN_DATA or APP_ID) are empty</description>
</image_process_response>
这是我用来为 SIGN_DATA
创建 SHA1 的 PHP 代码:
<?php
echo hash_hmac('SHA1', '<image_process_call><lang>en</lang><image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url><methods_list><method order="1"><name>desaturation</name></method><method order="2"><name>cartoon</name><params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params></method></methods_list><result_format>png</result_format><result_size>600</result_size></image_process_call>','<my-key>');
?>
这是上面的 xml,为便于阅读而格式化:
<image_process_call>
<lang>en</lang>
<image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url>
<methods_list>
<method order="1">
<name>desaturation</name>
</method>
<method order="2">
<name>cartoon</name>
<params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params>
</method>
</methods_list>
<result_format>png</result_format>
<result_size>600</result_size>
</image_process_call>
如有任何帮助,我们将不胜感激。提前致谢!
所以我弄清楚出了什么问题。这是我针对可能 运行 遇到与此 api 类似问题(无论平台如何)的任何其他人的详细解决方案:
部分问题(如@u_mulder 指出的那样)是 DATA
需要与 SIGNED_DATA
一起发送,以便 SHA1 可以在另一端解码.
解决我问题的另一部分是删除 <lang>en</lang>
。无论出于何种原因,它都会返回 Error 613: Invalid SIGN_DATA parameter.
无论如何,英语是默认语言,因此没有必要。
所以在解决这些问题之后,这是我的最终结果 url:
http://opeapi.ws.pho.to/addtask/?app_id=<my-app-id>&key=<my-key>9&sign_data=e456c393d11797c1a2945a85dd49ba2208cc66de&data=%3Cimage_process_call%3E%3Cimage_url+order%3D%221%22%3Ehttp%3A%2F%2Fwww.heroesandheartbreakers.com%2Fimages%2Fstories%2Fblogarticles%2F2016%2FJanuary2016%2FTV-Recap-Arrow-4x11-Olicity-is-home-470.jpg%3C%2Fimage_url%3E%3Cmethods_list%3E%3Cmethod+order%3D%221%22%3E%3Cname%3Ecartoon%3C%2Fname%3E%3Cparams%3Efill_solid_color%3D1%3Btarget_color%3D%28255%2C255%2C255%29%3Bborder_strength%3D20%3Bborder_width%3D1%3C%2Fparams%3E%3C%2Fmethod%3E%3C%2Fmethods_list%3E%3Cresult_format%3Epng%3C%2Fresult_format%3E%3Cresult_size%3E1500%3C%2Fresult_size%3E%3C%2Fimage_process_call%3E
请注意 url 已编码。这可能是必要的,也可能不是必要的,为了安全起见,我只是对其进行了编码。
这个returns:
<?xml version="1.0" ?>
<image_process_response>
<request_id>010afc13-6bba-44dd-b278-4f3bd1e41946</request_id>
<status>OK</status>
<description />
<err_code>0</err_code>
</image_process_response>
我现在可以使用 request_id
来获取编辑图像的 url:
http://opeapi.ws.pho.to/getresult?request_id=010afc13-6bba-44dd-b278-4f3bd1e41946
其中returns以下xml:
<image_process_response>
<request_id>010afc13-6bba-44dd-b278-4f3bd1e41946</request_id>
<status>OK</status>
<result_url>http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</result_url>
<result_url_alt>http://worker-images.ws.pho.to.s3.amazonaws.com/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</result_url_alt>
<nowm_image_url>http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png</nowm_image_url>
</image_process_response>
所以最终编辑图片的url是http://worker-images.ws.pho.to/i1/3BCB160A-691A-458B-9161-67AFA8A9EAA0.png(我相信link会在24小时后过期)
大功告成!
如果您想了解我是如何在一个简单的 Android 应用程序中实现此 api 的,请查看 github link:https://github.com/youravgjoe/ColoringPageGenerator
之前:
之后:
对我来说,错误已通过 (A) 确保使用 SHA1 而不是 SHA256(我自己的错)和 (B) 由于某种原因 sign_data 值必须小写。
删除 XML 中的所有新行 (Enter),然后重试。
<image_process_call>
<lang>en</lang>
<image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url>
<methods_list>
<method order="1">
<name>desaturation</name>
</method>
<method order="2">
<name>cartoon</name>
<params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params>
</method>
</methods_list>
<result_format>png</result_format>
<result_size>600</result_size>
</image_process_call>
到
<image_process_call><lang>en</lang><image_url order="1">http://www.w3schools.com/html/pic_mountain.jpg</image_url><methods_list><method order="1"><name>desaturation</name></method><method order="2"><name>cartoon</name><params>fill_solid_color=1;target_color=(255,255,255);border_strength=20;border_width=3</params></method></methods_list><result_format>png</result_format><result_size>600</result_size></image_process_call>