I have a problem when connecting, could anyone help me please. I'm new and I can not connect JSON PARSE HTTP with FRAGMENTS all the tutorials show with ACTIVITY, but I tried to convert and I can not, I'm grateful if you can help me.
JSONParser.java code
package br.com.menuruenf.menuruenf.domain;
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
/**
* Created by Rodolfo on 15/09/2015.
*/
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
Code DinnerFragment.java
package br.com.menuruenf.menuruenf.fragments;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;
import java.io.IOException;
import br.com.menuruenf.menuruenf.R;
import br.com.menuruenf.menuruenf.domain.Dinner;
import br.com.menuruenf.menuruenf.domain.JSONParser;
/**
* Created by Rodolfo on 01/09/2015.
*/
public class DinnerFragment extends BaseFragment {
//URL to get JSON Array
private static String url = "http://menu-api.herokuapp.com/dinners.json";
//JSON Node data
private static final String TAG_DINNER = "";
private static final String TAG_ID = "id";
private static final String TAG_DATE = "date";
private static final String TAG_SALAD = "salad";
private static final String TAG_ACCOMPANIMENT = "accompaniment";
private static final String TAG_GARNISH = "garnish";
private static final String TAG_PROTEIN1 = "protein1";
private static final String TAG_PROTEIN2 = "protein2";
private static final String TAG_PROTEIN3 = "protein3";
private static final String TAG_DESSERT = "dessert";
private static final String TAG_JUICE = "juice";
JSONArray dinner = null;
TextView dinner_id;
TextView dinner_date;
TextView dinner_salad;
TextView dinner_accompaniment1;
TextView dinner_garnish;
TextView dinner_protein1;
TextView dinner_protein2;
TextView dinner_protein3;
TextView dinner_dessert;
TextView dinner_juice;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_dinner, container, false);
//Import TextView
dinner_date = (TextView) view.findViewById(R.id.dinner_date);
dinner_salad = (TextView) view.findViewById(R.id.dinner_salad);
dinner_accompaniment1 = (TextView) view.findViewById(R.id.dinner_accompaniment1);
dinner_garnish = (TextView) view.findViewById(R.id.dinner_garnish);
dinner_protein1 = (TextView) view.findViewById(R.id.dinner_protein1);
dinner_protein2 = (TextView) view.findViewById(R.id.dinner_protein2);
dinner_protein3 = (TextView) view.findViewById(R.id.dinner_protein3);
dinner_dessert = (TextView) view.findViewById(R.id.dinner_dessert);
dinner_juice = (TextView) view.findViewById(R.id.dinner_juice);
//Creating new JSON Parser
JSONParser jsonParser = new JSONParser();
//Getting JSON from URL
JSONObject json = jsonParser.getJSONFromUrl(url);
try {
//Getting JSON Array
dinner = json.getJSONArray(TAG_DINNER);
JSONObject c = dinner.getJSONObject(0);
//Storing JSON item in a Variable
String did = c.getString(TAG_ID);
String ddate = c.getString(TAG_DATE);
String dsalad = c.getString(TAG_SALAD);
String daccompaniment = c.getString(TAG_ACCOMPANIMENT);
String dgarnish = c.getString(TAG_GARNISH);
String dprotein1 = c.getString(TAG_PROTEIN1);
String dprotein2 = c.getString(TAG_PROTEIN2);
String dprotein3 = c.getString(TAG_PROTEIN3);
String ddessert = c.getString(TAG_DESSERT);
String djuice = c.getString(TAG_JUICE);
//Set JSON DATA in TextView
dinner_date.setText(ddate);
dinner_salad.setText(dsalad);
dinner_accompaniment1.setText(daccompaniment);
dinner_garnish.setText(dgarnish);
dinner_protein1.setText(dprotein1);
dinner_protein2.setText(dprotein2);
dinner_protein3.setText(dprotein3);
dinner_dessert.setText(ddessert);
dinner_juice.setText(djuice);
}catch (JSONException e){
e.printStackTrace();
}
return view;
}
}
UPDATE A great solution is retrofit, simple and functional.