java - 在请求 OkHttp 中发送 JSON
问题描述
朋友们!
我有一个简单的 HTTP 请求:
void postRequest(String postUrl,String phone, String message) throws IOException {
OkHttpClient client = new OkHttpClient();
//RequestBody body = RequestBody.create(JSON, postBody);
RequestBody body = new FormBody.Builder()
.add("phone", phone)
.add("message", message)
.build();
Request request = new Request.Builder()
.url(postUrl)
.post(body)
.build();
//System.out.println(request);
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
call.cancel();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("TAG",response.body().string());
}
});
}
如何正确实现发送 JSON 对象而不是简单参数?我的尝试没有成功,所以我真的需要一个提示。
接受 JSON 的服务器在 AKKA-HTTP 上运行。如何正确向该服务器发送请求?
final case class Message(phone: String, message: String, service: String)
implicit val item = jsonFormat3(Message)
val queue: Queue[Message] = Queue()
val addMessage = post {
path("add_message"){
parameters("phone".as[String], "message".as[String], "service".as[String]){
(phone, message, service) => {
queue.enqueue(Message(phone, message, service))
complete("ok")
}
}
}
}
解决方案
以 JSON 格式映射和序列化对象的最简单方法是使用jackson-databind库的ObjectMapper类。
我个人用它来实现RestController
s的集成测试,效果很好。这是我实现的实用程序类,您可以将其用于您的目的:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public final class JsonUtils {
public static String json(Object obj) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(obj);
}
}
您需要的是一个 POJO 类,它实现了Serializable
,然后将您的类的实例传递给该json
方法,它将返回 JSON 格式。
您绝对可以将它用于 Android 项目。我发现了许多可以添加依赖项的示例,但这取决于您使用的是 Gradle 还是 Maven。
试试看!!!
推荐阅读
- react-native - 屏蔽字体容器而不在 react-native 中包装文本
- reactjs - 如何清除 ReactJS datepicker 的值
- node.js - 通过角度前端下载在nodejs中使用pdfkit库创建的PDF
- oracle - 将数据帧写入 oracle 时列标识符无效
- jquery - 从数组jquery单击设置多个图像
- iis - HTTP 错误 502.5 - .net core 3.0 中的进程失败
- kubernetes - 在 Kubernetes 中运行 pod 和容器
- visual-studio - vs 2019 在打开解决方案时崩溃而没有任何错误报告
- loopbackjs - 环回 API 资源管理器中的 {nk} 是什么?
- python - 烧瓶 Heroku 正确的 Procfile