带有'content-type'的Angular 2标头:'text / xml',http post无效

时间:2017-10-30 15:56:22

标签: xml angular http http-headers

抱歉,我真的不知道如何提出这个问题,基本上,我想用一个自定义标题调用http.post,其属性'content-type'设置为'text / xml'。 不幸的是,它给我发错500(内部服务器错误)。 但是当我将属性'content-type'设置为'application / json'时,一切都运行得很好。 这是我的代码:

getXMLHeaders(): Headers {
    const headers = new Headers({
        'Authorization': `Basic ${localStorage.getItem('APIkey')}`,
        'content-type': 'text'
    });
    return headers;
}



getOptionsXML(): RequestOptions {
    const options = new RequestOptions({headers: this.getXMLHeaders()});
    return options;
}



writeXML(file: string, xml: any, http: Http): boolean {
    try {
        const options = this.getOptionsXML();
        const body = {
            'path': file,
            'body': xml
        };
        console.log(body);
        const readFile = http.post(LOCAL_API_ADDRESS
            + localStorage.getItem('APIport')
            + '/local-api/write-File/', body, options)

            .toPromise();
        readFile.then(res => {
        })
            .catch(err => {
                this.loggerServer.error(http, 'writeXML() promise error: '
                    + err.message);
            });

        return true;
    } catch (err) {
        this.loggerServer.error(http, 'FileManager writeXML: ' + err.message);
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

内容类型中,您通知端点您要发送的数据类型。如果你说它是XML(text / xml,application / xml)并且服务器不接受这种格式,则会产生500.显然你的端点只接受JSON(application / json)。

简单地说,您正在尝试以这种格式发送消息:

<content>
  <param Name="ParamA">TextA</text>
</content>

虽然服务器只接受这种格式:

{
    "ParamA":"TextA"
}