我是自动化的一个API的POST调用使用Rest保证和内容类型和ACCEPT头我必须使用"应用程序/vnd.apijson"。但是每次我使用“应用程序/vnd.apijson”,我都会得到415个状态代码。尽管使用邮递员的相同POST呼叫工作得非常好。
以下是我的示例代码:
ApiUtils.setBaseURI("xxxxx");
ApiUtils.setBasePath("/orders");
RequestSpecification request = RestAssured.given().auth().oauth2(BaseClass.token);
request.header("ACCEPT", "application/vnd.api+json");
request.header("Content-Type", "application/vnd.api+json");
request.body(JsonCreator.createJson());
Response response = request.post();
以下是收到的答复
Request method: POST
Request URI: https://xxxxxx/orders
Headers: ACCEPT=application/vnd.api+json
Content-Type=application/vnd.api+json; charset=ISO-8859-1
Cookies: <none>
Multiparts: <none>
Body:
{
"data": {
"type": "orders",
"attributes": {
"external_id": "2020-04-04-172",
"order_items": [
{
"menu_item_id": "5d29ae25805aaf0009095410",
"variation_id": "5d29ae25805aaf0009095418",
"quantity": 1,
"note": "some note"
}
],
"revenue_center_id": "5d7b44021a2976000938da62",
"order_type_id": "5d27329790a5ba0009386a75",
"guests": [
{
"first_name": "xx",
"last_name": "xx",
"email": "xx@gp.com",
"phone": "5551234567"
}
],
"tip_amount": "1.00"
}
}
}
{"errors":[{"status":415,"code":415,"title":"Content-Type must be JSON API-compliant"}],"jsonapi":{"version":"1.0"}}
我曾尝试将Content-Type更改为应用程序/json,正如其他帖子/评论所建议的那样,但这似乎对我的资源不正确。
目前,我使用的是Rest Asken v4.3.0和json-path v4.3.0。此外,为了构建我正在使用com.google.gson.JsonObject库的请求体。
在日志中,您可以看到“charset=ISO-8859-1”正在发送,由Rest-Assured自动添加。config()禁用该选项,并且不会发送字符集
试试下面的方法
ApiUtils.setBaseURI("orders");
ApiUtils.setBasePath("/orders");
RequestSpecification request = RestAssured.given().auth().oauth2(BaseClass.token).header("Content-Type", "application/vnd.api+json").header("Accept", "application/vnd.api+json").config(RestAssured.config().encoderConfig(encoderConfig().appendDefaultContentCharsetToContentTypeIfUndefined(false))).log().all();
request.body(JsonCreator.createJson());
Response response = request.post();
这也需要静态导入
导入静态io.restassured.config.EncoderConfig.encoder配置;
https://github.com/rest-assured/rest-assured/wiki/Usage#avoid-将字符集自动添加到内容类型标头
我试图通过XLIFF内容在以下函数的参数,我得到错误: {“message”:“此资源不支持请求实体的媒体类型'application/xml'。”,“exceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“application/xml”的内容中读取类型为“xliff”的对象。”,“exceptionType”:“System.Net.Http.Unsu
问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道
我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。
我正在用Spring Boot构建一些API,但是当我试图用Postman查询时,我得到了一些关于Content-Type的错误。 我不明白哪里出了问题。 我注意到错误消失时,我删除了@刚体作为参数的方法。为什么啊? 我只想: 将XML发送到API
此服务从移动客户端接收多部分请求,并将请求传递给下游服务以上载图像。我在下游服务中看到415种不受支持的媒体类型 获取以下异常 我的下游服务的API签名 是否有人可以指导我的代码片段中的错误,或者是否有任何需要在vertx server或vertx web client中启用的设置? 谢谢尼蒂斯·戈亚尔
问题内容: 我正在尝试使用jQuery 1.6(Jackson 2.1.1 和Spring 3.2.0 )通过JSON通过该方法向数据库中插入和/或更新数据。 JS代码如下。 通过URL映射的Spring控制器内部的方法如下。 服务器按照问题的含义进行响应, 415不支持的媒体类型 标头信息如下所示。 整个文件如下。 当我删除一个方法参数并仅用于接受请求参数时,它可以工作。 问题答案: 浏览器发送