GoogleHttpClientSpiceRequest에 대한 샘플을 사용하지만 JSON 형식으로 요청을 보내야합니다. 그래서, 난 내 코드를 변경하지만 오류가 발생했습니다 :RoboSpice JSON 서버 요청
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): 15:39:08.744
Thread-11643 An exception occurred during request network execution :null
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): java.lang.NullPointerException 07-11 15:39:08.738:
E//DefaultRequestRunner.java:138(5662): at com.octo.android.robospice.sample.googlehttpclient.SampleSpiceRequest.loadDataFromNetwork(SampleSpiceRequest.java:43)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at com.octo.android.robospice.sample.googlehttpclient.SampleSpiceRequest.loadDataFromNetwork(SampleSpiceRequest.java:1)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at com.octo.android.robospice.request.CachedSpiceRequest.loadDataFromNetwork(CachedSpiceRequest.java:45)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at com.octo.android.robospice.request.DefaultRequestRunner.processRequest(DefaultRequestRunner.java:134)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at com.octo.android.robospice.request.DefaultRequestRunner$1.run(DefaultRequestRunner.java:201)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 07-11
15:39:08.738: E//DefaultRequestRunner.java:138(5662): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-11 15:39:08.738: E//DefaultRequestRunner.java:138(5662): at java.lang.Thread.run(Thread.java:864)
내 코드 : 패키지 com.octo.android.robospice.sample.googlehttpclient;
import java.io.IOException;
import org.json.JSONException;
import org.json.JSONObject;
import roboguice.util.temp.Ln;
import android.util.Log;
import com.google.api.client.http.ByteArrayContent;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.json.jackson.JacksonFactory;
import com.octo.android.robospice.request.googlehttpclient.GoogleHttpClientSpiceRequest;
import com.octo.android.robospice.sample.googlehttpclient.model.json.WeatherResult;
public class SampleSpiceRequest extends GoogleHttpClientSpiceRequest<WeatherResult> {
private String baseUrl;
private JSONObject jsonObject;
public SampleSpiceRequest(String zipCode) {
super(WeatherResult.class);
this.baseUrl = "my domain";
JSONObject jsonObject = new JSONObject();
try {
jsonObject.accumulate("action", "login");
jsonObject.accumulate("username", "root");
jsonObject.accumulate("password", "pass");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public WeatherResult loadDataFromNetwork() throws IOException {
HttpRequest request = getHttpRequestFactory().buildPostRequest(
new GenericUrl(baseUrl),
ByteArrayContent.fromString("application/json", jsonObject.toString())
);
request.setParser(new JacksonFactory().createJsonObjectParser());
Log.i("DEBUG", request.execute().parseAsString());
return request.execute().parseAs(getResultType());
}
}
감사가 왜 널
private JSONObject jsonObject;
로 다스 려하는 loadDataFromNetwork에서jsonObject.toString()
를 호출 할 때, 그 참조 did't. .. – LenmonEclipse를 사용하는 경우 두 번째 항목은 '로컬 변수 선언이 다른 필드 또는 변수를 숨 깁니다.'섹션에서 '환경 설정> Java> 컴파일러> 오류/경고'로 이동할 수 있습니다. 이런 종류의 일이 발생할 때 경고하기 위해 이것을'Warning'으로 설정하십시오. – njzk2
나는 안드로이드 스튜디오를 사용하고 있지만 몇 시간이 지난 후에도 그렇게 생각하지 않았습니다. Thank4! – Lenmon