Acceder

Ver la Versión Completa : Leer JSON Wordpress


portal47
29/04/15, 00:48:00
Hola, en la app que estoy haciendo quiero que aparesca los proximos eventos de la empresa y estos para no estar actualizando la app al agregar un evento quiero obtener los datos de la web, pero no me muestra ningun dato.

Estoy obteniendo los datos desde aqui:
http://cmx.org.mx/json/get_posts/

pero si intento con este si aparecen los datos:
http://api.androidhive.info/contacts/

este es mi codigo
package info.androidhive.jsonparsing;

import info.androidhive.jsonparsing.R;
import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends ListActivity {

private ProgressDialog pDialog;

// URL to get contacts JSON
private static String url = "http://cmx.org.mx/json/get_posts/";

// JSON Node names
private static final String TAG_CONTACTS = "get_posts";
private static final String TAG_ID = "id";
private static final String TAG_TITLE = "slug";

// contacts JSONArray
JSONArray get_posts = null;

// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;

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

contactList = new ArrayList<HashMap<String, String>>();

ListView lv = getListView();

// Listview on item click listener
lv.setOnItemClickListener(new OnItemClickListener() {

override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem

String title = ((TextView) view.findViewById(R.id.title))
.getText().toString();

// Starting single contact activity
Intent in = new Intent(getApplicationContext(),
MainActivity.class);
in.putExtra(TAG_TITLE, title);
startActivity(in);

}
});

// Calling async task to get json
new GetContacts().execute();
}

/**
* Async task class to get json by making HTTP call
* */
private class GetContacts extends AsyncTask<Void, Void, Void> {

override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Espera...");
pDialog.setCancelable(false);
pDialog.show();

}

override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();

// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

Log.d("Response: ", "> " + jsonStr);

if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);

// Getting JSON Array node
get_posts = jsonObj.getJSONArray(TAG_CONTACTS);

// looping through All Contacts
for (int i = 0; i < get_posts.length(); i++) {
JSONObject c = get_posts.getJSONObject(i);

String id = c.getString(TAG_ID);
String title = c.getString(TAG_TITLE);

// tmp hashmap for single contact
HashMap<String, String> contact = new HashMap<String, String>();

// adding each child node to HashMap key => value
contact.put(TAG_ID, id);
contact.put(TAG_TITLE, title);

// adding contact to contact list
contactList.add(contact);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}

return null;
}

override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[] { TAG_TITLE }, new int[] { R.id.title});

setListAdapter(adapter);
}

}

}

rafaxplayer
01/05/15, 12:08:54
Haver yo lo primero antes de nada es que la url te sirva un json para consumir , para eso debes crear en tu web algún servicio para tu app android.
Monta un php que obtenga los datos que quieres y monte un json como el ejemplo de androidhive para despues consumirlo desde tu app de android.
Esa url que das no te da nada, por lo tanto empieza por ahi.

portal47
08/05/15, 16:29:31
Haver yo lo primero antes de nada es que la url te sirva un json para consumir , para eso debes crear en tu web algún servicio para tu app android.
Monta un php que obtenga los datos que quieres y monte un json como el ejemplo de androidhive para despues consumirlo desde tu app de android.
Esa url que das no te da nada, por lo tanto empieza por ahi.

La web esta en wordpress y no se si se pueda hacer lo que me dices.
Por el momento estoy escribiendo el json y lo subo a la web para que se sincronice, no creo que sea lo mejor pero no he encontrado nada mejor

Dild0
14/05/15, 23:23:45
portal47

Buenas, nose exactamente que quieres, pero alomejor esto te ayuda https://wordpress.org/plugins/json-api/

DaSound
17/05/15, 23:01:04
Yo tengo hecho un FeedReader para mi blog Android (lo único que yo lo tengo hecho en Blogger, pero creo que funcionaría igualmente) y en lugar de mediante el JSON, tiro del rss... obteniendo un XML. Tanto el JSON como el XML son fáciles de tratar, pero por darte una vía alternativa para hacer lo que quieres.

Saludos.