【问题标题】:Retrofit API interface call errors改造 API 接口调用错误
【发布时间】:2018-09-04 15:08:48
【问题描述】:

我一直在关注在线教程,并仔细遵循以下代码作为 API 接口。我不断收到诸如非法类型开头之类的错误:

package com.gwiddle.airsoftcreations.airsoftapp;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface ApiInterface {

    @GET("register.php")
    Call<User> performRegistration(@Query("name") String Name, 
        @Query("user_name") String UserName, @Query("user_password") String UserPassword );

    @GET("login.php")
    Call<User>perfromUserLogin@Query("user_name") String Username, 
        @Query("user_password") String UserPassword)
}

请帮忙

【问题讨论】:

  • 可能你不应该用大写字母命名你的变量。所以尝试将其重命名为 String userPassword、String username 等。因为在 java 中用于类名的大写字母,所以可能您的某些类具有名称 Username 例如。
  • 关注此问题,以便其他人也能理解您的问题:stackoverflow.com/help/how-to-ask
  • 你能链接到教程吗?它们是否还包含拼写错误?

标签: java android retrofit


【解决方案1】:

尝试改变这个

@GET("login.php")
Call<User>perfromUserLogin@Query("user_name") String Username, 
    @Query("user_password") String UserPassword)

到这里

@GET("login.php")
Call<User> perfromUserLogin(@Query("user_name") String Username, 
    @Query("user_password") String UserPassword);

【讨论】:

    【解决方案2】:

    正如@Shadow Suave 正确指出的那样,您为login 编写的调用中存在错误。目前是:

    @GET("login.php")
        Call<User>perfromUserLogin@Query("user_name") String Username, 
            @Query("user_password") String UserPassword)
    

    您必须将该调用更改为:

     @GET("login.php")
            Call<User> perfromUserLogin(@Query("user_name") String Username, 
                @Query("user_password") String UserPassword);
    

    另外我觉得这些方法应该是registerlogin用户到指定的服务,所以它们应该是POST方法,因为GET请求方法在这里没有任何意义,所以你也应该检查一下。此外,尽管您现在正在学习教程,但为了将来的目的,您应该知道您永远不应该将您的用户名和特别是密码作为查询参数传递。因为查询参数可以显示在网络服务器日志历史记录中,更多信息see this

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 2021-08-05
      • 2021-06-30
      • 2023-02-25
      • 2018-02-27
      • 2021-09-30
      • 2019-10-05
      • 1970-01-01
      • 2021-10-28
      相关资源
      最近更新 更多