Ich versuche derzeit, Antwort JSON zu erhalten, indem Sie eine REST-Anfrage, aber Problem ist "Wenn Status 200: OK, dann bekomme ich JSON Antwort, aber wenn Status 403: Verboten dann kann ich nicht JSON-Antwort erhalten ". Im Anschluss ist mein Arbeits Code auf 200: OK, aber nicht auf einer anderen Statusmeldung:POST Anfrage 403 verboten wird nicht unterstützt
Schnittstelle:
@Rest(rootUrl = "http://something.com", converters = {FormHttpMessageConverter.class, GsonHttpMessageConverter.class})
public interface RestClient {
@Post("/isec/api/user/login")
JsonObject LoginIt(@Field String email, @Field String password, @Field String type);
}
Verbrauch:
JsonObject p = restClient.LoginIt(emailText.getText().toString(),passwordText.getText().toString(),spinner1.getSelectedItem().toString().toUpperCase());
GsonStr = new Gson().toJson(p);
ShowResults(p);
Log:
E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: com.jutt.isec, PID: 3463
org.springframework.web.client.HttpClientErrorException: 403 Forbidden
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:88)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:585)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:541)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:499)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:447)
at com.jutt.isec.RestClient_.LoginIt(RestClient_.java:41)
at com.jutt.isec.MainActivity.doLogin(MainActivity.java:130)
at com.jutt.isec.MainActivity_.access$201(MainActivity_.java:31)
at com.jutt.isec.MainActivity_$5.execute(MainActivity_.java:159)
at org.androidannotations.api.BackgroundExecutor$Task.run(BackgroundExecutor.java:405)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
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:818)
Irgendwelche Vorschläge oder Lösungen? Vielen Dank im Voraus
ändern Wenn Sie eine 403 verboten bekommen, dann erhalten Sie keine JSON-Antwort zu beginnen. Also versuch es nicht als json. – greenapps
dann wie soll ich das in Ausnahme oder etwas behandeln, sonst stürzt meine Anwendung sowieso –
Setzen Sie den Aufruf in einen try catch-Block. Dann wird Ihre Anwendung nicht abstürzen. Wenn Ihre Anwendung abstürzt, finden Sie die Ursache im LogCat. Sie wissen also, welche Ausnahme ausgelöst wird. Sagen Sie uns, welche Ausnahme Sie haben. – greenapps