这个问题以前可能有人问过,但没有,没有得到明确的回答。具体如何将原始的整个JSON发布到一个修改请求的主体中?
在这里见类似的问题。或者这个答案是正确的,它必须是表单url编码并作为字段传递?我真的希望不是这样,因为我连接到的服务只是希望文章正文中有原始的JSON。它们并不是为了寻找JSON数据的特定字段而设置的。
我只想和restperts一劳永逸地澄清这一点。一人回答不用改装。另一个不确定句法。另一个则认为是的,但必须将表单URL编码并放在一个字段中(在我的情况下,这是不可接受的)。不,我不能为我的Android客户端重新编码所有的服务。是的,在主要项目中发布原始JSON而不是将JSON内容作为字段属性值传递是很常见的。让我们把它弄好,继续前进。有人能指出说明这是如何完成的文档或示例吗?或提供可以/不应该这样做的正当理由。
更新:有一件事我可以百分之百肯定地说。你可以在谷歌的凌空中做到这一点。它就建在里面。我们可以在改装中这样做吗?
代替类,我们还可以直接使用hashmap
来发送主体参数,例如
interface Foo {
@POST("/jayson")
FooResponse postJson(@Body HashMap<String, Object> body);
}
@body
注释定义一个请求正文。
interface Foo {
@POST("/jayson")
FooResponse postJson(@Body FooRequest body);
}
由于在默认情况下,reverfit使用Gson,foorequest
实例将序列化为JSON,作为请求的唯一主体。
public class FooRequest {
final String foo;
final String bar;
FooRequest(String foo, String bar) {
this.foo = foo;
this.bar = bar;
}
}
与:
FooResponse = foo.postJson(new FooRequest("kit", "kat"));
将产生以下机构:
{"foo":"kit","bar":"kat"}
Gson文档有更多关于对象序列化如何工作的内容。
现在,如果您真的真的希望自己发送“RAW”JSON作为主体(但请为此使用Gson!)您仍然可以使用typedinput
:
interface Foo {
@POST("/jayson")
FooResponse postRawJson(@Body TypedInput body);
}
TypedInput定义为“具有关联mime类型的二进制数据”。有两种使用上述声明轻松发送原始数据的方法:
>
使用TypedByteArray发送原始字节和JSON mime类型:
String json = "{\"foo\":\"kit\",\"bar\":\"kat\"}";
TypedInput in = new TypedByteArray("application/json", json.getBytes("UTF-8"));
FooResponse response = foo.postRawJson(in);
子类TypedString创建TypedJsonString
类:
public class TypedJsonString extends TypedString {
public TypedJsonString(String body) {
super(body);
}
@Override public String mimeType() {
return "application/json";
}
}
然后使用类似于#1的类的实例。
问题内容: 我想修改一个传出的SOAP请求。我想从信封的主体中删除2个xml节点。我设法设置了一个拦截器,并将生成的消息的String值设置为端点。 但是,以下代码似乎不起作用,因为未按预期方式编辑外发消息。是否有人对如何执行此操作有一些代码或想法? 问题答案: 我今天也有这个问题。经过大量的哭泣和咬牙切齿,我能够在CXF源附带的configuration_interceptor演示中更改Stre
我正在编写一个自定义中间件,它为每个请求生成一个加密签名(它与AWS API v4使用的身份验证机制非常相似)。为了正确生成此签名,我必须获取HTTP请求的整个原始正文。 我还使用BodyParser,它是在我的自定义中间件之后注册的。 我的自定义中间件可以这样表示: 这就是我在服务器上使用它的方式。 正如您可以验证的那样,中间件已将原始主体成功写入控制台,但请求将永远不会由注册的路由处理,连接将
问题内容: 因此,根据jQuery Ajax文档 ,它在发送请求时以查询字符串的形式序列化数据,但是设置应允许我在正文中发送实际的JSON。不幸的是,我很难首先确定是否发生这种情况,其次是将对象的外观发送给服务器。我所知道的是服务器未解析我正在发送的内容。 使用http客户端发布对象文字时,它可以工作。但是当将jQuery与结合使用时,它将失败。不幸的是,当我在Safari中分析请求时,它说消息的
我试图在同一个API请求中发布正文和部分数据 如下所示 但它不起作用,我出错了 @正文参数不能与窗体或多部分编码一起使用。(参数#1) 完成错误日志 07-31 05:01:01.644 6315-6315/android.os.E/AndroidRuntime: FATAL EXCEPTION: main Process:ooper.loop, PID: 6315ooper.java:135Ru
我正在尝试在Spring Boot中使用WebClient制作API POST Request。但是我无法使用JSON正文发出我想要的请求并以JSONObject的形式接收响应。 JSON正文: 服务类别- 工作区模型- 主通话- 我需要发送一个JSON主体列表,作为主体post请求。请帮我做帖子请求提前谢谢
我最近开始在我的android应用程序中使用改装,这是我添加用户的改装请求: 这里User是我想在服务器上注册的用户的模型类。问题是服务器需要Base64.encode()格式的json正文请求。有没有办法使用改装发送Base64编码数据? 我可以想到手动这样做: 然后在请求中传递这个。但是,我必须手动完成这项工作,并处理每个POST请求。有没有更干净的方法。