【问题标题】:Android retrofit API call not going through (Server receives nothing at all)Android 改造 API 调用未通过(服务器什么也没收到)
【发布时间】:2015-12-17 11:47:34
【问题描述】:

我正在尝试从我的 android 应用程序调用一个自定义 API,它将返回一个 JSON 对象(据我所知,在这种情况下,Retrofit 会将其映射为所需的数据类型,即字符串,如果我错了)。 所以问题是当我尝试进行 API 调用时,服务器根本没有收到任何东西。不知道如何隔离错误。在此之前我没有任何改造经验。

另外,我被告知要通过正文发出帖子请求。不确定定义我的界面意味着什么。对此的任何建议将不胜感激。

这是主要活动的代码:

 RestAdapter adap = new RestAdapter.Builder().setEndpoint(Endpoint).build();
 OnLoginAPI loginAPICalls = adap.create(OnLoginAPI.class);

    loginAPICalls.userloginCredentials(userCredentails.get(0), userCredentails.get(1), new Callback<String>() {
        @Override
        public void success(String APIresponse, Response response) {
            status = APIresponse;
        }

        @Override
        public void failure(RetrofitError error) {
            status = "API Error";
        }
    });
    return status;

这是我的界面:

public interface OnLoginAPI {

@POST("/v1/login")
public void userloginCredentials(
        @Field("username") String username,
        @Field("password") String password,
        Callback<String> response);

}

这是 logcat 日志:

09-20 12:41:27.165      721-802/? W/AlarmManager﹕ FACTORY_ON= 0
09-20 12:41:27.165      721-802/? D/LightsService﹕ [SvcLED] SvcLEDTask
09-20 12:41:27.175      721-803/? D/BatteryService﹕ turn on LED for charging
09-20 12:41:27.185      721-738/? D/SensorManager﹕ registerListener :: handle = 7  name= GP2A Light Sensor delay= 200000 Listener= com.android.server.LightsService$4@4259fcc8
09-20 12:41:27.185      721-738/? D/LightsService﹕ [SvcLED] SvcLEDReceiver::isHappyNight = false
09-20 12:41:27.385      721-802/? D/SensorManager﹕ unregisterListener::  Listener= com.android.server.LightsService$4@4259fcc8
09-20 12:41:27.385      721-802/? D/LightsService﹕ [SvcLED] onSensorChanged::light value = 652.0
09-20 12:41:27.395      721-802/? I/LightsService﹕ fileWriteInt : /sys/class/sec/led/led_lowpower  value : 0
09-20 12:41:27.395      721-802/? D/LightsService﹕ setLightLocked is called
09-20 12:41:28.897      183-183/? E/SMD﹕ DCD ON
09-20 12:41:31.900      183-183/? E/SMD﹕ DCD ON

【问题讨论】:

  • 检查您的 logcat 并在此处发布日志。您正在使用哪个版本的改造?
  • 我已经导入了这个依赖:“com.squareup.retrofit:retrofit:1.9.0”。此外,在已编辑的问题中发布了 logcat 日志。 @Gaskoin
  • @Divesh 您的 logcat 日志没有改造日志。尝试使用以下代码 sn-p 设置日志级别: // 生产日志级别 RestAdapter.LogLevel logLevel = RestAdapter.LogLevel.NONE; if (BuildConfig.DEBUG) { logLevel = RestAdapter.LogLevel.FULL;在您的休息适配器生成器中添加以下内容: .setLogLevel(logLevel)

标签: android retrofit no-response


【解决方案1】:

您的改造接口声明需要@FormURLEncoded 注释,以便改造知道如何处理请求的正文。

【讨论】:

  • 实际上,它确实在之前的 POST 注释之前有 FormURLEncoded 注释。但它不起作用,所以我尝试了一些不同的东西。但排除它也不起作用......
猜你喜欢
  • 2020-07-03
  • 2022-12-06
  • 2016-04-05
  • 1970-01-01
  • 2021-06-26
  • 2015-06-10
  • 2012-10-17
  • 2020-06-07
  • 1970-01-01
相关资源
最近更新 更多