我正在测试改进,以与凌空比较,我很难得到我的请求的回应。例如,我做这样的事情:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://localhost:8080")
.build();
MyService service = restAdapter.create(MyService.class);
service.getToto("toto", new Callback<Toto>() {
@Override
public void success(Toto toto, Response response) {
// Try to get response body
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
try {
reader = new BufferedReader(
new InputStreamReader(response.getBody().in()));
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
}
@Override
public void failure(RetrofitError error) {}
});
它工作了,对象< code>toto被设置,但是出于测试目的,我还想显示服务器返回的JSON响应。
所以我正试图从react.getBody()
读取InputStream
,这是一个TypedInputStream
。不幸的是,我总是得到一个IOException:流被关闭
了。
我尝试使用Retrofit中的Utils类,但我得到了相同的IOException
错误。
如果您设置了< code >。setLogLevel(RestAdapter。LogLevel.FULL)在用于创建服务的< code>RestAdapter上,您应该在调试控制台中获得原始的JSON响应输出。
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer("http://my_lovely_api.com")
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
mService = restAdapter.create(MyService.class);
如果您想对这个原始响应做一些不同的事情,您仍然可以使用成功块中的代码来创建JSON字符串,假设您保持<code>日志级别。在<code>setLogLevel</code>方法中使用FULL,如果没有,则它不会解析<code>response.getBody()中的输入流。in(),因为它已经被读取和关闭。
改造2.0之前
String bodyString = new String(((TypedByteArray) response.getBody()).getBytes());
改造2.0
String bodyString = new String(response.body().bytes());
在回调的尖括号内写上“响应”,然后从此响应中提取流。
service.getToto("toto", new Callback<Response>() {
@Override
public void success(Response result, Response response) {
//Try to get response body
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
try {
reader = new BufferedReader(new InputStreamReader(result.getBody().in()));
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
}
@Override
public void failure(RetrofitError error) {
}
});
我使用拦截器设置请求的头,如下所示: 并且一切按预期工作(服务器看到并接受)。 我的问题是,当响应到来时,我想在我的应用程序中读取这些标题。 我使用,但总是返回一个空的String[]。所有其他属性(url、params、verb)都可以访问,只有标头丢失了。 我在请求头中设置了一个键,基本上我想在收到响应时检查这个键。 有没有线索为什么标头不可见以及如何在中获取它们?
问题内容: jQuery的AJAX错误函数具有以下参数: 跨浏览器获取响应主体的最佳方法是什么? 这行得通吗(可靠地在所有浏览器中)? 问题答案: 有一个隐藏的函数可以从XHR等距提取数据: 如果您将其作为第二个参数传递,它将把响应视为JSON字符串。 请注意,由于没有响应(例如网络问题),您可能会收到错误消息。确保您也涵盖了这种情况。另外,我相信(不确定)如果服务器返回或状态,则jQuery会调
我试图在onFailure(ReformationError error)中获取错误响应正文,但获取的是null。 我正在使用标题“Accept:text/plain”(接受:text/plain)(接收请求)和“response”(响应),如果我设置日志级别,则可以将正文视为文本。完整。此外,<代码>错误。getResponse()。getStatus()为我提供正确的状态代码。 但是当我执行或
是否可以使用改型库只累加字符串响应?我有一种情况,我需要在我的链接上添加查询,以便该链接看起来像:localhost//register?handle=someid SomeID是整数,当我这样做时,我将从服务器收到由20个字符组成的字符串格式的响应。我怎样才能得到那个回应?改型甚至可以处理不是Json格式的响应吗?
我正在尝试使用WireMock创建动态模拟。我有一种情况,如果我指定如下URL: 那么我应该会收到如下响应: 简而言之,路径参数在响应正文中返回。我可以通过使用设置为urlPath模式使请求URL通用。但是,我不确定应该如何捕获abc@abc.com并使用正则表达式在响应中返回此值。