我正在使用改装向服务器发送POST请求。帖子正文的格式必须是jdata={“key1”:“value1”,…}
以及设置为application/x-www-form-urlencoded
的内容类型标题。我发现了一个类似的问题,但公认的答案不起作用。
这是我试过的-
我的界面
public interface APIHandler {
@Headers("Content-Type: application/x-www-form-urlencoded")
@FormUrlEncoded
@POST(URL)
Call<ResponseBody> getdata(@Field("jdata") String jdata);
}
调用函数
public void load() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("BASE_URL")
.addConverterFactory(GsonConverterFactory.create())
.build();
// prepare call in Retrofit 2.0
APIHandler iAPI = retrofit.create(APIHandler.class);
String requestBody = "{\"id\":\"value\",\"id1\":\"value2\"}"
Call<ResponseBody> call = iAPI.getData(requestBody);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> c, Response<ResponseBody> response) {
if (response.isSuccess()) {
ResponseBody result = response.body();
String gs = new Gson().toJson(result);
Log.d("MainActivity", "response = " + gs + " status: " + statusCode);
} else {
Log.w("myApp", "Failed");
}
}
@Override
public void onFailure(Call<ResponseBody> c, Throwable t) {
}
});
}
但是我收到了response=null
和status=200
。我做错了什么?预期的响应只是一个字符串,而不是JSON数组。
你可以这样使用。我已经测试过了,效果很好
public interface APIHandler {
@POST(URL)
Call<ResponseBody> getdata(@Body JsonObject body);
}
请求机构:
JsonObject requestBody = new JsonObject();
requestBody.addProperty("id", "value1");
requestBody.addProperty("id1", "value2");
在改造2.0中准备呼叫
APIHandler iAPI = retrofit.create(APIHandler.class);
和调用功能:
Call<ResponseBody> call = iAPI.getData(requestBody);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> c, Response<ResponseBody> response) {
if (response.isSuccess()) {
String result = response.body().string();
Log.d("MainActivity", "response = " + result);
} else {
Log.w("myApp", "Failed");
}
}
@Override
public void onFailure(Call<ResponseBody> c, Throwable t) {
}
});
我把这个留在这里是为了帮助别人。
上面的代码是正确的。正如我在最后一行提到的,期望一个普通的字符串响应。但是由于它不是JSON响应,转换可能不起作用,响应为空。我能找到的唯一解决方案是直接将响应转换为字符串-
try {
stresp = response.body().string()
Log.d("MainActivity", "response = " + stresp + " status: " + statusCode);
} catch (IOException e) {
//Handle exception
}
也许有更好的方法来处理这个问题,但这对我来说很有效!
我对SSIS非常陌生,我有现有的SQL表,我想将数据加载到十进制(10,2)列中,但是.csv文件作为源文件包含值,因此我试图使用派生列和表达式将值替换为 我已将平面文件源输出-输出列更改为 派生列输出-Columns输出设置为 SSIS接受所有这些,但在为派生列运行包时会出现错误,如下所示 [派生列[2]]错误:SSIS错误代码DTS_E_InsidedTransformFailureOnErr
问题内容: 我正在实现登录功能,并为此使用Post请求,但是我收到错误提示 “ retrofit.RetrofitError:com.squareup.okhttp.internal.http.HttpMethod.METHODS” 下面是我的代码 在它下面的logcat输出。 02-10 13:02:43.846:W / System.err(30684):retrofit.RetrofitEr
我正在尝试构建一个Flutter应用程序并在此过程中学习Dart,但在调试时我有点沮丧。我从API获取了一个资源,现在我想将JSON字符串打印到控制台,但它一直在切断字符串。 所以我实际上有两个问题:终端控制台真的是打印调试消息的唯一方法吗?我如何在控制台打印大字符串而不会自动切断它们?
我在使用LiquiBase更改postgres db中的列长度时遇到了问题。 我有一个字段描述为varchar(300)的表帐户。我想把它改成varchar(2000)。 我已经在同一个文件中删除并重新创建了主键,因此我没有权限、问题、模式/数据库名称或类似的任何东西。为了测试,我清除了表中的数据。 任务“:db-management:update”执行失败。
我有一个场景,我必须调用具有相同基本URL的API,例如,但具有不同的。 我有一个Retrofit 2的实例,它是通过构建的: 如下所示: 对于某些,我必须调用相同的API,但在其他情况下,我必须从完全不同的调用它。如何更改实例以因此在运行时指向不同的URL? 改装实例没有
重头戏来了,打开conf/ioc/dao.js, 修改dao的定义 dao : { type : "org.nutz.dao.impl.NutDao", args : [{refer:"dataSource"}], fields : { interceptors : [{ref