Warum bin ich immer "inkompatible Typen: Objekt kann nicht in eine Zeichenfolge konvertiert werden"?
Ich versuche, den einfachst möglichen code für den Aufruf einer Web API REST-Methode aus einer Android-app, und der code, den ich gefunden hier sah sehr vielversprechend:
public String callWebService(String requestUrl)
{
String deviceId = "Android Device";
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(requestUrl);
request.addHeader("deviceId", deviceId);
ResponseHandler handler = new BasicResponseHandler();
String result = "";
try
{
result = httpclient.execute(request, handler); //<= a line too far
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
httpclient.getConnectionManager().shutdown();
return result;
}
Jedoch, es wird nicht kompilieren, mir zu sagen: "inkompatible Typen: Objekt kann nicht in eine Zeichenfolge konvertiert werden" auf dieser Linie:
result = httpclient.execute(request, handler);
Es gibt ein paar Optionen in einem Versuch zur Umgehung der logjam:
...aber ich weiß nicht, was, wenn überhaupt, von diesen Optionen ist die bevorzugte Methode, dieses dilemma zu lösen. Ist ein Weg, "der Weg"?
UPDATE
Dieser code, wie ich schon sagte, sieht vielversprechend aus für mich, aber ich denke, es ist im Grunde unbrauchbar ist, denn es gibt mir die gefürchtete "NetworkOnMainThreadException" Aus dem logcat:
04-01 13:18:41.861 1267-1267/hhs.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
. . .
java.lang.IllegalStateException: Could not execute method of the activity
. . .
Caused by: java.lang.reflect.InvocationTargetException
. . .
Caused by: android.os.NetworkOnMainThreadException
InformationsquelleAutor B. Clay Shannon | 2014-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Sie mit einem raw-type-in
Mit raw-types, die den Typ der Variablen in der Methode, Erklärungen gelöscht. So erscheint alles
Object
(oder was auch immer die linke Grenze der type-parameter ist).Stattdessen, verwenden Sie einen parametrisierten Typ
Diese auch funktioniert, da
BasicResponseHandler
erstrecktResponseHandler<String>
.Nun
wird eine Rückkehr geben im Zusammenhang mit der type-argument verwendet bei der Deklaration der
handler
, dieString
- und das Ergebnis kann daher zugeordnet werdenString
variable (oder irgendwo eineString
erwartet wird).InformationsquelleAutor Sotirios Delimanolis
Versuchen Sie dies:
Wenn ich mich nicht falsch, Sie sollten in der Lage sein, um die "toString" - Methode konvertieren Sie die Rückkehr der execute-Methode zum String-Typ.
InformationsquelleAutor Ivan Verges