我使用的是改型2.1,当我调用@get时,它会说
HTTP method annotation is required (e.g., @GET, @POST, etc.).
现在..如果我定义@retrofit.http.get,它将抛出
No Retrofit annotation found. (parameter #1)
11-15 12:11:20.423 25033-25506/com.app.garuda.ridernet E/UncaughtException: java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: retrofit.RetrofitError: gitapi.getquery: HTTP method annotation is required (e.g., @GET, @POST, etc.).
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:400)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at $Proxy0.getquery(Native Method)
at com.app.garuda.ridernet.SignIn.getjson(SignIn.java:92)
at com.app.garuda.ridernet.SignIn.access$100(SignIn.java:28)
at com.app.garuda.ridernet.SignIn$download.doInBackground(SignIn.java:125)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.IllegalArgumentException: gitapi.getquery: HTTP method annotation is required (e.g., @GET, @POST, etc.).
at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:107)
at retrofit.RestMethodInfo.parseMethodAnnotations(RestMethodInfo.java:179)
at retrofit.RestMethodInfo.init(RestMethodInfo.java:117)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294)
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
at $Proxy0.getquery(Native Method)
at com.app.garuda.ridernet.SignIn.getjson(SignIn.java:92)
at com.app.garuda.ridernet.SignIn.access$100(SignIn.java:28)
at com.app.garuda.ridernet.SignIn$download.doInBackground(SignIn.java:125)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface Testapi {
@GET("/getq.php")
Call<Testmodel> getquery(
@Query("sort") String order
);
@FormUrlEncoded
@POST("/insert.php")
Call<ResponseBody> insert(
@Field("nick") String nick,
@Field("mail") String mail
);
}
以及方法
private void getjson() {
//Creating a rest adapter
RestAdapter adapter = new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
//Creating an object of our api interface
Testapi api = adapter.create(Testapi.class);
Call<Testmodel> call = api.getquery("a");
call.enqueue(new Callback<Testmodel>() {
@Override
public void onResponse(Call<Testmodel> call, Response<Testmodel> response) {
try {
Testmodel obj = response.body();
TextView txt = (TextView) findViewById(R.id.textView);
txt.setText("ID: " + obj.getId() + " nick: " + obj.getNick() + " mail: " + obj.getMail());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<Gitmodel> call, Throwable throwable) {
Toast.makeText(SignIn.this, "FALLIMENTO", Toast.LENGTH_LONG).show();
}
});
}
分级文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "23.0.2"
defaultConfig {
multiDexEnabled true
applicationId "xxx"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile files('libs/retrofit-2.1.0.jar')
compile files('libs/gson-2.7.jar')
compile files('libs/okhttp-3.4.1.jar')
compile files('libs/okio-1.11.0.jar')
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.google.android.gms:play-services:9.2.1'
compile 'com.android.support:design:24.1.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.android.gms:play-services-maps:9.2.1'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
@post
带注释的方法,必须有参数,标记为@body
示例:
@POST("/user/mobile/verify")
VerifyCodeResponse verifyMobile(@Body VerifyRequest request);
我对我的修改代码有一个问题,我似乎缺少了什么,或者没有完全理解我需要做什么。这是我的错误的完整副本。我没有使用ProGuard,但我已经应用了所有的例外情况,如果你想要在规则集中,只是为了确保。对于调试和发布,Minify都设置为false。
Stacktrace: 界面: 我的应用程序在调试(在虚拟和真实设备上)上运行良好,但在发布构建后,它在任何地方都无法运行(因为改型会引发错误)。我尝试了所有存在的方法来修复它,但任何一种都不起作用。 我的进口商品很好 我添加了守卫规则:
本文向大家介绍MySQL中修改表结构时需要注意的一些地方,包括了MySQL中修改表结构时需要注意的一些地方的使用技巧和注意事项,需要的朋友参考一下 MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据。不是所有的数据库管理员、程序员、系统管理员都非常了解Mysql能避免这种情况。DBA会经常碰到这种生产中断的情况,当升级脚本修改了应用层和数据库层,或者缺乏经
问题内容: 而且我正在尝试更改方法注释,但是java.lang.reflect.Method不包含任何地图字段(例如“ annotations”)或方法(例如“ getDeclaredAnnotationMap”) 只有但是我可以用这个字节数组做什么? 那么,如何修改方法的注释呢? 编辑: 我创建了:http : //pastebin.com/T2rewcwU 但是,仅编辑此方法实例,如果取消注释
问题内容: 我了解jsonp是一种绕过相同原始政策的技术。基本上,您在脚本标签中引用json服务服务器端点,因为脚本标签不受SO策略的限制。 我的问题是:假设服务器具有一个为json提供服务的终结点,是否需要对服务器进行任何修改才能在客户端中使用jsonp? 我想不,但是想确定。 问题答案: 是的,JSONP呈现时略有不同,因此您的服务器需要支持它。 JSON看起来像这样: JSONP看起来像这样