当前位置: 首页 > 知识库问答 >
问题:

需要修改2 HTTP方法注释(例如@get、@post等)

松秦斩
2023-03-14
E/AndroidRuntime﹕ FATAL EXCEPTION: main
        java.lang.IllegalArgumentException
    : HTTP method annotation is required (e.g., @GET, @POST, etc.).
            for method APIService.getRegAccrDetails
                    at retrofit.Utils.methodError(Utils.java:177)
                    at retrofit.Utils.methodError(Utils.java:167)
                    at retrofit.RequestFactoryParser.parseMethodAnnotations(RequestFactoryParser.java:135)
                    at retrofit.RequestFactoryParser.parse(RequestFactoryParser.java:59)
                    at retrofit.MethodHandler.create(MethodHandler.java:30)
                    at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)
                    at retrofit.Retrofit$1.invoke(Retrofit.java:132)
                    at $Proxy0.getRegAccrDetails(Native Method)
                    at alvin.test.myapplication.MainActivity.liferayAccess(MainActivity.java:136)
                    at alvin.test.myapplication.MainActivity.access$000(MainActivity.java:28)
                    at alvin.test.myapplication.MainActivity$1.onClick(MainActivity.java:49)
                    at android.view.View.performClick(View.java:3511)
                    at android.view.View$PerformClick.run(View.java:14105)
                    at android.os.Handler.handleCallback(Handler.java:605)
                    at android.os.Handler.dispatchMessage(Handler.java:92)
                    at android.os.Looper.loop(Looper.java:137)
                    at android.app.ActivityThread.main(ActivityThread.java:4424)
                    at java.lang.reflect.Method.invokeNative(Native Method)
                    at java.lang.reflect.Method.invoke(Method.java:511)
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
                    at dalvik.system.NativeStart.main(Native Method)
  @GET("Triu-services-portlet.regaccrdetails/get-all-reg-accr-details-by-num-branch-code/num/{num}/branch-code/{branch-code}")
    public Observable<List<RegAccrDetails>> getRegAccrDetails(@Path("num") String num, @Path("branch-code")String branchCode);
private static OkHttpClient createOkHttpClient() {
   String username = "test@liferay.com";
   String password = "TEST";
   String credentials = username + ":" + password;
   final String basic =
           "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);//no_wrap



    OkHttpClient client = new OkHttpClient();
    client.interceptors().add(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Response response = chain.proceed(chain.request());

            Request original = chain.request();

            // Customize the request
            Request request = original.newBuilder()
                    .header("Authorization", basic)
                    .header("Accept", "application/json")
                    //.header("Authorization", "auth-token")//add token for service A4oslsSXZxfbLdk
                    .method(original.method(), original.body())
                    .build();

            response = chain.proceed(request);

            // Customize or return the response
            return response;
        }
    });

   return client;
}
private void liferayAccess(){
    Log.d("liferayAccess", "Entered");
    APIService service =  ServiceGenerator.createService(APIService.class);
    Observable<List<RegAccrDetails>> liferayResponse = service.getRegAccrDetails("004589209", "001");

    liferayResponse.subscribeOn(Schedulers.newThread()).map(listResponse -> "response index 0 " + listResponse.get(0).getRegNum())
            .subscribe( response-> Log.d("Liferay Num", response),
                        error -> Log.d("Error", error.toString())
                    );
}
 compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'

compile 'io.reactivex:rxjava:1.0.16'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

//compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
/*compile 'com.squareup.okhttp:okhttp:2.2.0'*/
compile ('com.squareup.retrofit2:retrofit:2.0.0-beta3') {//com.squareup.retrofit2:retrofit:2.0.0-beta3
    // exclude Retrofit’s OkHttp peer-dependency module and define your own module import
    //exclude module: 'okhttp'
}
compile 'com.squareup.okhttp3:okhttp:3.0.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }




    defaultConfig {
        applicationId "alvin.test.myapplication"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'

    compile 'io.reactivex:rxjava:1.0.16'
    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

    //compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
    /*compile 'com.squareup.okhttp:okhttp:2.2.0'*/
    compile ('com.squareup.retrofit2:retrofit:2.0.0-beta3') {//com.squareup.retrofit2:retrofit:2.0.0-beta3
        // exclude Retrofit’s OkHttp peer-dependency module and define your own module import
        //exclude module: 'okhttp'
    }
    compile 'com.squareup.okhttp3:okhttp:3.0.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'

    //compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.google.android.gms:play-services-gcm:7.3.0'
    compile 'com.google.android.gms:play-services:7.8.0'
}
retrolambda {
    jdk "C:\\Program Files\\Java\\jdk1.8.0_20"
}
-keepattributes *Annotation*
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>; }
-keepattributes Signature


-keep class com.google.gson.** { *; }
-keep class com.google.inject.** { *; }
-keep class org.apache.http.** { *; }
-keep class org.apache.james.mime4j.** { *; }
-keep class javax.inject.** { *; }
-keep class retrofit.** { *; }

共有1个答案

胡修伟
2023-03-14

您使用的是beta2版本的改版插件,它依赖于仍然存在于com.squreup.retovit包中的改版beta2版本。

compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

然后,您将导入treverfit本身的beta3版本,该版本位于reverfit2包中。基本上它可以和beta2版本一起使用。

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'

您并没有真正使用beta3,因为它与beta2插件不兼容,而且会出现编译时错误。检查您的导入以验证。

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
 类似资料:
  • Stacktrace: 界面: 我的应用程序在调试(在虚拟和真实设备上)上运行良好,但在发布构建后,它在任何地方都无法运行(因为改型会引发错误)。我尝试了所有存在的方法来修复它,但任何一种都不起作用。 我的进口商品很好 我添加了守卫规则:

  • 我对我的修改代码有一个问题,我似乎缺少了什么,或者没有完全理解我需要做什么。这是我的错误的完整副本。我没有使用ProGuard,但我已经应用了所有的例外情况,如果你想要在规则集中,只是为了确保。对于调试和发布,Minify都设置为false。

  • 我使用的是改型2.1,当我调用@get时,它会说 现在..如果我定义@retrofit.http.get,它将抛出 以及方法 分级文件

  • 问题内容: 而且我正在尝试更改方法注释,但是java.lang.reflect.Method不包含任何地图字段(例如“ annotations”)或方法(例如“ getDeclaredAnnotationMap”) 只有但是我可以用这个字节数组做什么? 那么,如何修改方法的注释呢? 编辑: 我创建了:http : //pastebin.com/T2rewcwU 但是,仅编辑此方法实例,如果取消注释

  • 问题内容: 与调用代码: 该类实现了Callback,因此定义了成功/失败。 堆栈跟踪: 问题答案: 这意味着在运行时找不到注释。如果没有HTTP方法类型(及其包含的相对URL),则Retrofit无法发出请求。 您是否正在使用Proguard或其他工具来修剪“未使用”的代码?如果是这样,请指示其保留Retrofit的注释。

  • 主要内容:HTTP 请求:GET vs POST,jQuery $.get() 方法,实例,demo_test.php 文件代码:,jQuery $.post() 方法,实例,demo_test_post.php 文件代码:jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。 HTTP 请求:GET vs POST 两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。 GET - 从指定的资源请求数据 POST -