基本上,我的问题很简单。我正在使用改版作为一个框架,用于与我不控制的服务器进行通信。我想在我的请求上设置某种类型的标记,它会在响应中自动返回。有没有办法做到这一点?
我找到了一个复杂而又不酷的方法来做这件事。
0.在请求和响应类型中添加标记字段
1.自定义OKHTTP3.RequestBody
以添加标记字段:
@Override public RequestBody convert(T value) throws IOException {
Buffer buffer = new Buffer();
Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8);
JsonWriter jsonWriter = gson.newJsonWriter(writer);
adapter.write(jsonWriter, value);
jsonWriter.close();
TagRequestBody requestBody = TagRequestBody.create(MEDIA_TYPE, buffer.readByteString());
requestBody = value.tag;//just for example ,you will need to check type here
return requestBody;
}
@Override public T convert(ResponseBody source) throws IOException {
try {
//the ugly part,for that retrofit will wrap the responseBody with ExceptionCatchingRequestBody.(ExceptionCatchingRequestBody extends ResponseBody)
ResponseBody value = source;
if (value.getClass().getSimpleName().equals("ExceptionCatchingRequestBody")){
ResponseBody temp = null;
try {
Field f = source.getClass().getDeclaredField("delegate");
f.setAccessible(true);
temp = (T) f.get(value);
} catch (Exception e) {
e.printStackTrace();
}
value = temp != null?temp:value;
}
T t = adapter.fromJson(source.charStream());
if (value instanceof TagResponseBody) {
t.tag = ((TagResponseBody)value).tag;
}
return t;
} finally {
value.close();
}
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
if (request.body() instanceof TagRequestBody) {
TagResponseBody responseBody = new TagResponseBody(response.body());
responseBody.arg = ((TagRequestBody) request.body()).arg;
response = response.newBuilder()
.body(responseBody)
.build();
}
return response;
}
})
我见过龙卷风文档和示例,其中self.write方法被广泛用于在超文本标记语言上呈现一些值,其中POST请求在处理程序中运行。但是我找不到关于如何将响应返回给客户的清晰信息。 例如,我正在从我的客户端调用Tornado服务器上的POST请求。接受post请求的代码为: 有了这个,我可以找到cbtp的值,有了,我可以用HTML打印它。但是,相反,我想以JSON格式将这个值返回给客户机,比如我想知道如
我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:
我正在尝试从JavaScript应用程序向另一个应用程序中的endpoint进行API调用。 当我调用endpoint时,我得到了状态代码和消息,但我无法以任何方式访问响应体。我已经尝试了不同的方法来获取数据,但似乎没有一种方法对我有效。 在方法“someAction”中,我想使用来自API调用的响应/结果中的数据。我在代码中添加了单个日志行打印的输出。 如何在定义“result.status/m
所以我想打印响应的结果,然后使用gson为模型生成数据,但响应永远不会得到返回,因为调用了onResponse。! 如果你注意到Logcat,日志。我的回答没有显示。。!?但是在使用该请求的活动的onSuccess中,它通常会显示日志,但是如果日志包含响应对象,它不会显示哪个非常奇怪,也没有任何意义。。!? Logcat公司 我尝试使用具有相同url和参数的PostMan测试请求,它通常返回jso
我从这里获取信息实现了Struts2 REST API Struts2 Rest插件 Struts2中的restful插件中是否有返回自定义响应的方法。我做了所有必要的更改,如 从这个问题得到的。我仍然得到这个错误 如果我不添加上面的行,我仍然会得到相同的响应。 这是我在struts中提供的操作。xml: 这将满足所有请求,包括获取、发布、放置、更新。 在将post方法的返回类型从HttpHead
问题内容: 我正在使用Node的模块发出 HTTP 请求,但是在上,返回的块似乎并不满足完整的请求响应。这是我的代码: 有没有办法在结束请求之前等待完整的输出?难道我做错了什么?谢谢! 问题答案: 您还应该收听“结束”事件