使用WP_Http_Curl的IBM Document Translator我收到诸如Error:415 Unsupported Media Type之类的错误消息

问题描述

$filename = ABSPATH.'wp-content/uploads/sample.txt';
        $filetype = wp_check_filetype('sample.txt');
        $file = @fopen( $filename,'r' );   
        $file_size = filesize( $filename ); 
        $file_data = fread( $file,$file_size );

            $postBody = array(
                'file' => $file_data,'file_content_type'=>'text/plain','filename'=>'sample.txt','model_id'=>'en-fr'
            );
            $response=wp_remote_request(
                'https://api.jp-tok.language-translator.watson.cloud.ibm.com/instances/9ccfc671-1c75-40b6-ad45-b46ae4b53979/v3/documents?version=2018-05-01',array(
                    'method' => 'POST',"body"     => $postBody,"headers"  => array(
                    'Authorization' => 'Basic ' . $auth,'Content-Type'=>'text/plain','Accept'=>'text/plain',)
                )
            );
            print_r($response);

它提供415不支持媒体类型, 我为文件提供了正确的Content-Type。 我的文件名为sample.txt,因此我将 Content-Type 添加文本/纯文本 如何解决这个问题。


解决方法

当您通过word-press插件调用服务时,我认为您只能使用cURL的API文档所定义的用法-https://cloud.ibm.com/apidocs/language-translator#translatedocument

API文档建议,在您的情况下,请求正文仅需要文件正文和翻译信息。

            $postBody = array(
                'file' => $file_data,'model_id'=>'en-fr'
            );

,您无需指定Content-TypeAccept