URL에서 가져온 데이터에서 생성 한 문자열에서 JSON 데이터를 가져 오려고합니다. 지금까지 내가 내 코드에있는 것입니다 :URL에서 가져온 문자열에서 JSON 객체 가져 오기
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView tv = (TextView)findViewById(R.id.result);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String username = "username";
String password = "password";
String url = "http://www.example.com/api/core/v1/my/";
String unp = username+":"+password;
class MyUser {
public String firstName;
public String lastName;
}
try {
HttpClient client = new DefaultHttpClient();
HttpGet header = new HttpGet(url);
String encoded_login = Base64.encodeToString(unp.getBytes(), Base64.NO_WRAP);
header.setHeader(new BasicHeader("Authorization", "Basic "+encoded_login));
HttpResponse response = client.execute(header);
HttpEntity entity = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
for (String line; (line = reader.readLine()) != null;line.replaceAll("throw 'allowIllegalResourceCall is false.';", "")) {
Vector<Object> vector = new Vector<Object>();
vector.add(line);
String result = vector.toString();
JSONObject json = (JSONObject)new JSONParser().parse(result);
System.out.println("name=" + json.get("name"));
System.out.println("width=" + json.get("width"));
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
Log.d(MY_APP_TAG, "Error e: " + e);
}
}
이 아래로 올바른 JSON 데이터를 당기고,하지만 때마다 나는 다음과 같은 얻고 데이터 분석을 시도 :
E/AndroidRuntime(923): FATAL EXCEPTION: main
E/AndroidRuntime(923): java.lang.NoClassDefFoundError: org.json.simple.parser.JSONParser
E/AndroidRuntime(923): at basic.authentication.BasicAuthenticationActivity.onCreate(BasicAuthenticationActivity.java:85)
E/AndroidRuntime(923): at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(923): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime(923): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
E/AndroidRuntime(923): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidRuntime(923): at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidRuntime(923): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidRuntime(923): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(923): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(923): at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime(923): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(923): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(923): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(923): at dalvik.system.NativeStart.main(Native Method)
I을 JSON에 익숙하지 않아서이 사실을 알아내는 것이 정말 큰 도전 과제임을 입증하고 있으므로 이에 대한 도움을 많이 받으실 수 있습니다.
는 또한, JSON 데이터는 다음과 같이 통해 제공 :
{
"enabled" : true,
"email" : "[email protected]",
"firstName" : "example firstname",
"lastName" : "example lastname",
"name" : "example fullname",
"level" : {
나는 이러한 JSON 객체가 아닌 JSON의 배열 인 것을 알고있다.
기본 오류 :'자바. lang.NoClassDefFoundError' - 즉 JSON 라이브러리를 찾을 수 없습니다. 다른 JSON 구현을 다운로드했는데 프로젝트의'libs' 폴더에 .jar 파일을 넣지 않았습니까? – Jens
나는 이것을 볼 수 있었고 모든 것이 정확하다는 것을 알았습니다. 저는 지금 당장이 것을 정말로 혼동합니다. JSON이 나를 미치게 만듭니다. –
사용중인 타사 라이브러리를 제거하는 것으로 시작하십시오. 안드로이드는 (기본) JSON 파서 (org.json 패키지에 있음)를 이미 가지고있다. 두 번째로 HTTP 코드가 엉망입니다. HTTP 다운로드를 AsyncTask로 옮길 필요가 있습니다. 그리고 응답을 String으로 변환하는 방법은 기껏해야 역기능입니다. ** 당신은 ** org.apache .http.util.EntityUtils # toString (HttpEntity)'메서드 (SDK에도 포함됨) – Jens