빌드 한 웹 서비스에 대한 간단한 Android 클라이언트를 만들려고하는데 런타임시 문제가 발생합니다.Android 용 저지 클라이언트 - NullPointerException
이02-18 16:26:06.446: E/AndroidRuntime(1381): FATAL EXCEPTION: AsyncTask #1
02-18 16:26:06.446: E/AndroidRuntime(1381): java.lang.RuntimeException: An error occured while executing doInBackground()
02-18 16:26:06.446: E/AndroidRuntime(1381): at android.os.AsyncTask$3.done(AsyncTask.java:278)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-18 16:26:06.446: E/AndroidRuntime(1381): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.lang.Thread.run(Thread.java:856)
02-18 16:26:06.446: E/AndroidRuntime(1381): Caused by: java.lang.NullPointerException
02-18 16:26:06.446: E/AndroidRuntime(1381): at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.ClientResponse.getType(ClientResponse.java:615)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:532)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.WebResource.handle(WebResource.java:674)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.maze.client.MyClient.doInBackground(MyClient.java:25)
02-18 16:26:06.446: E/AndroidRuntime(1381): at com.maze.client.MyClient.doInBackground(MyClient.java:1)
02-18 16:26:06.446: E/AndroidRuntime(1381): at android.os.AsyncTask$2.call(AsyncTask.java:264)
02-18 16:26:06.446: E/AndroidRuntime(1381): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-18 16:26:06.446: E/AndroidRuntime(1381): ... 5 more
이해가 안 : 나는 로그 캣이 스택 트레이스를 얻을
@Path("/service")
public class AndroidService {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/hello")
public String getJSON(@QueryParam("number") String nr)
{
String s = "Hi there! The number is: "+nr;
return s;
}
}
:
public class MyClient extends AsyncTask<EditText, Integer, String> {
private EditText text;
protected String doInBackground(EditText... strings) {
RuntimeDelegate
.setInstance(new com.sun.ws.rs.ext.RuntimeDelegateImpl());
WebResource wbr;
Client client = Client.create();
wbr = client
.resource("http://my.ip:8080/MazeService/rest/service/hello");
String result = wbr.queryParam("number", "10")
.accept(MediaType.APPLICATION_JSON).get(String.class);
text = strings[0];
return result;
}
protected void onProgressUpdate(Integer... progress) {
// setProgressPercent(progress[0]);
}
protected void onPostExecute(String result) {
if (result != null)
this.text.setText(result);
else
Log.d("MyApp", "No Result");
}
}
및 서비스 : 여기
는 클라이언트입니다 직업이란 무엇인가? blem은 비슷한 클라이언트가 PC에서 작동하기 때문에 발생합니다. Android VirtualDevice에서 서버에 액세스 할 수 있으므로 IP 주소에는 문제가 없습니다.Android 버전은 4.0.3 API 버전 15입니다. 클라이언트의 경우 Jersey 1.11을 사용했습니다.
편집
누군가가 그것이 있어야로 사용하지 않는 나에게 말했다 이후는 또한 글고 치기로 전체를 제거하기 위해 노력했다. 여전히 같은 오류가 있습니다. 나는 내가 뭘 잘못하고 있는지 이해할 수 없다. 다른 추가 정보를 표시해야하는 경우 알려 주시기 바랍니다. 또한, 어떤 생각이 좋다. 나는 안드로이드를 처음 접했고 어리석은 실수를 저질렀을지도 모른다. 코드에 따라
귀하의 문제가있다 NullPointer 뭔가'문자열 결과 = wbr.queryParam ("숫자", "10") .accept (MediaType.APPLICATION_JSON) .get (String.class); ' – Blundell
@Blundell 예, 그게 문제가 될 수도 있다고 생각 ,하지만이 코드가 포함 된 간단한 프로그램이 있기 때문에이 문제가 발생하는지 이해할 수 없습니다. 완벽하게 달리고 있습니다. – Dragos
@ L7ColWinters 정확히 어떻게해야하는지 이해가 안됩니다. 몇 가지 코드를 입력하십시오. – Dragos