Не получает вывод от JSON от URL

Я пытаюсь разобрать JSON, но не могу получить. Кто-нибудь может помочь мне узнать, как это получить:

{
  "firstName": "****",
  "headline": "Software Engineer",
  "id": "Y8gyiQS0gM",
  "lastName": "****",
  "location": {
    "country": {"code": "in"},
    "name": "Bengaluru Area, India"
  },
  "pictureUrl": "",
  "siteStandardProfileRequest": {"url": ""}
}

Я использовал этот код, чтобы получить, но не получил никакого результата в журнале.

DefaultHttpClient httpclient = new DefaultHttpClient();
try {
    HttpGet httpget = new HttpGet("url");

    HttpResponse response = httpclient.execute(httpget);
    String jsonResp=EntityUtils.toString(response.getEntity());
    Log.d("HTTP","Rsponse : "+ jsonResp);

    JSONObject jsonObject = new JSONObject(jsonResp);
    String firstname = jsonObject.getString("firstName");
    String id = jsonObject.getString("id");
    String headline = jsonObject.getString("headline");
    String lastName = jsonObject.getString("lastName");
    //String pictureUrl  = jsonObject2.getString("pictureUrl");

    Log.d("HTTP", "firstname : " + firstname.toString() + "id" + id.toString());
} ...

Я написал этот код для просмотра профиля пользователя. Но ничего не получил в результате.

РЕДАКТИРОВАТЬ:

public class ViewProfileActivity extends ListActivity {

Button userProfile;
TextView tv;
private static final String TAG_ID = "id";
private static final String TAG_FNAME = "firstname";
private static final String TAG_LNAME = "lastname";
private static final String TAG_HLINE = "headline";
private static final String TAG_PURL = "pictureUrl";
private static final String TAG_URL = "url";
private ProgressDialog pDialog;
ArrayList<HashMap<String, String>> contactList = null;
 String url="...."

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_user);

    userProfile = (Button) findViewById(R.id.view);
    tv=(TextView)findViewById(R.id.textView1);

    userProfile.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            new GetContacts().execute();
        }


        class GetContacts extends AsyncTask<Void, String, Void> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // Showing progress dialog
                pDialog = new ProgressDialog(ViewProfileActivity.this);
                pDialog.setMessage("Please wait...");
                pDialog.setCancelable(false);
                pDialog.show();

            }

            @Override
            protected Void doInBackground(Void... params) {
                DefaultHttpClient httpclient = new DefaultHttpClient();
                try {
                    HttpGet httpget = new HttpGet(
                            "url");
                    HttpResponse response = httpclient.execute(httpget);
                    String jsonResp = EntityUtils.toString(response.getEntity());
                    Log.d("HTTP","Rsponse : "+ jsonResp);

                    JSONObject jsonObject = new JSONObject(jsonResp);
                    String firstname = jsonObject.getString("firstName");
                    String id = jsonObject.getString("id");
                    String headline = jsonObject.getString("headline");
                    String lastname = jsonObject.getString("lastName");
                    String pictureUrl = jsonObject.getString("pictureUrl");
                    JSONObject jsonObject2 = jsonObject
                            .getJSONObject("siteStandardProfileRequest");
                    String url = jsonObject2.getString("url");
                    Log.d("HTTP", "firstname : " + firstname + "\n" + "id :"
                            + id + "\n" + "headline : " + headline + "\n"
                            + "lastName :" + lastname + "\n" + "pictureUrl :"
                            + pictureUrl + "\n" + "Url :" + url);


                    HashMap<String, String> contact = new HashMap<String, String>();
                    contact.put(TAG_ID, id);
                    contact.put(TAG_FNAME, firstname);
                    contact.put(TAG_LNAME, lastname);
                    contact.put(TAG_HLINE, headline);
                    contact.put(TAG_PURL, pictureUrl);
                    contact.put(TAG_URL, url);
                    contactList.add(contact);
                    tv.setText((CharSequence) contactList);

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                // Dismiss the progress dialog
                if (pDialog.isShowing())
                    pDialog.dismiss();

                ListAdapter adapter = new SimpleAdapter(
                        LinkedInSampleActivity.this, contactList,
                        R.layout.list_item, new String[] {TAG_URL,TAG_FNAME}, new int[]{R.id.imageView1,R.id.textView1 });
                setListAdapter(adapter);
            }
        }

});
}

}

2 ответа

Решение

Используйте этот код, чтобы сделать HTTP-запрос (для url передать в свой URL)

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 500);

Client = new DefaultHttpClient(params);
httpget = new HttpGet(url);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
mContent = Client.execute(httpget, responseHandler);

Затем используйте это, чтобы получить ваши данные:

JSONObject jsonObject = new JSONObject(mContent);
String firstname = jsonObject.getString("firstName");
String id = jsonObject.getString("id");
String headline = jsonObject.getString("headline");
String lastName = jsonObject.getString("lastName");

Примечание::

  • для url Вы должны передать свой URL-адрес, из которого вы пытаетесь получить ответ JSON
  • Также поместите приведенный выше код внутри Asynchronous task в противном случае происходит сбой, потому что, поскольку вы делаете сетевой запрос

Надеюсь это поможет! Вернитесь назад, если у вас есть какие-либо ошибки.

{РЕДАКТИРОВАТЬ}

public class ViewProfileActivity extends ListActivity {

    Button userProfile;
    TextView tv;
    private static final String TAG_ID = "id";
    private static final String TAG_FNAME = "firstname";
    private static final String TAG_LNAME = "lastname";
    private static final String TAG_HLINE = "headline";
    private static final String TAG_PURL = "pictureUrl";
    private static final String TAG_URL = "url";
    private ProgressDialog pDialog;
    ArrayList<HashMap<String, String>> contactList = null;
     String url="...."

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_user);

        userProfile = (Button) findViewById(R.id.view);
        tv=(TextView)findViewById(R.id.textView1);

        userProfile.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                new GetContacts().execute();
            }


            class GetContacts extends AsyncTask<Void, String, Void> {
                String firstname;
                String id;
                String headline;
                String lastname;
                String pictureUrl;

                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    // Showing progress dialog
                    pDialog = new ProgressDialog(ViewProfileActivity.this);
                    pDialog.setMessage("Please wait...");
                    pDialog.setCancelable(false);
                    pDialog.show();

                }

                @Override
                protected Void doInBackground(Void... params) {
                    DefaultHttpClient httpclient = new DefaultHttpClient();
                    try {
                        HttpGet httpget = new HttpGet(
                                "url");
                        HttpResponse response = httpclient.execute(httpget);
                        String jsonResp = EntityUtils.toString(response.getEntity());
                        Log.d("HTTP","Rsponse : "+ jsonResp);

                        JSONObject jsonObject = new JSONObject(jsonResp);
                        firstname = jsonObject.getString("firstName");
                        id = jsonObject.getString("id");
                        headline = jsonObject.getString("headline");
                        lastname = jsonObject.getString("lastName");
                        pictureUrl = jsonObject.getString("pictureUrl");
                        JSONObject jsonObject2 = jsonObject
                                .getJSONObject("siteStandardProfileRequest");
                        String url = jsonObject2.getString("url");
                        Log.d("HTTP", "firstname : " + firstname + "\n" + "id :"
                                + id + "\n" + "headline : " + headline + "\n"
                                + "lastName :" + lastname + "\n" + "pictureUrl :"
                                + pictureUrl + "\n" + "Url :" + url);


                        HashMap<String, String> contact = new HashMap<String, String>();
                        contact.put(TAG_ID, id);
                        contact.put(TAG_FNAME, firstname);
                        contact.put(TAG_LNAME, lastname);
                        contact.put(TAG_HLINE, headline);
                        contact.put(TAG_PURL, pictureUrl);
                        contact.put(TAG_URL, url);
                        contactList.add(contact);
                        tv.setText((CharSequence) contactList);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void result) {
                    super.onPostExecute(result);
                    // Dismiss the progress dialog
                    if (pDialog.isShowing())
                        pDialog.dismiss();

                    ListAdapter adapter = new SimpleAdapter(
                            LinkedInSampleActivity.this, contactList,
                            R.layout.list_item, new String[] {TAG_URL,TAG_FNAME}, new int[]{R.id.imageView1,R.id.textView1 });
                    setListAdapter(adapter);

                    // SET your Text Views here 
                    //
                    //USE the variables stored globally in your Aynnc Class
                    //
                    //
                }
            }

    });
    }
}

Для разбора:
Если вы достигнете до Log.d("HTTP","Rsponse : "+ jsonResp);Вы можете использовать Gson для разбора.

public class JsonResponseModel {

 String firstName;  
 String lastName;  
 String headline;  
 String id;  
//rest of the fields

//getters setters functions

}

Для именования расхождений (согласно переменным в веб-сервисе) в классе модели можно использовать аннотации типа @SerializedName,

Затем, используя его с Gson:

Gson gson = new Gson();
JsonResponseModel responseModelObject = new JsonResponseModel();
responseModelObject= gson.fromJson(jsonResp, JsonResponseModel.class);   
//now you have the data in responseModelObject

NetworkOnMainThreadException:
Почему я пишу "Если", вы достигаете... в первой строке ответа.

С кодом, размещенным в вопросе, вы можете вызывать сетевую операцию напрямую (?), Вы можете столкнуться с этим исключением.

Другие вопросы по тегам