我正在开发使用不同服务其余部分的图形界面(用Java编写)。我必须调用这样的服务:
@PUT @Path("nomeServizio") public Response nomeServizio(final FormDataMultiPart multiPart) { ......}
呼叫服务:
service: function (data) { return $http({ url: PATH_REST_SERVICES + '/nomeServizio', headers: {"Content-Type": "multipart/form-data"}, data: data, method: "PUT" }); }
当我从Angularjs服务文件中请求时,如果服务具有Content-Type = multipart / form- data,则会收到错误400(错误请求)
如果服务的Content-Type =“ application / x-www-form-urlencoded; charset = utf-8”或“ application / json; charset =utf-8”,则我收到415(不支持的媒体类型)错误“应用程序/表单数据”。
我正在使用javascript和html5开发前端,但是由于JavaScript中不存在FormDataMultiPart对象,因此我在网络上找不到任何可以帮助我的东西。
我尝试格式化数据以多种方式发送,但始终返回400或415。
我应该如何格式化数据以发送到剩余呼叫?
内容类型应该在标题中吗?
所述FORMDATA接口提供了一种容易地构成一组表示表单字段和它们的值,然后可以使用能够容易地发送的键/值对XHR发送方法。如果编码类型设置为,则使用与表单使用的格式相同的格式multipart/form-data。
multipart/form-data
var formData = new FormData(); formData.append('type', type); formData.append('description', description); formData.append('photo', photo); return $http({ url: PATH_REST_SERVICES + '/nomeServizio', headers: {"Content-Type": undefined }, data: formData, method: "PUT" });
将内容类型标头设置为至关重要undefined。通常,$http服务会将内容类型设置为application/json。当内容类型为时undefined,XHRAPI将自动将内容类型设置为multipart/form-data具有适当的多部分边界
undefined
application/json