Reputation: 305
i want to parse my serialized JSON data from the website : http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON but my result that i get back is the source code from the site: http://demos.brianbuikema.com/apps/soa_services/employees? So somewhere my parameters format=JSON will delete. but I have no idea how en where
this is my code don't mind the log.d, it's just for me when i'm debugging debugging. `
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet("http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON");
String result = null;
try {
// execute the request
Log.d("buh", "2aa");
HttpResponse response = httpclient.execute(httpget);
Log.d("buh", "2a");
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
Log.d("buh", "2b");
if (entity != null) {
// A Simple Response Read
Log.d("buh", "2c");
InputStream instream = entity.getContent();
result = convertStreamToString(instream);
Log.d("buh",result);
// Closing the input stream will trigger connection release
instream.close();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the
* BufferedReader.readLine() method. We iterate until the BufferedReader
* return null which means there's no more data to read. Each line will
* appended to a StringBuilder and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is),
8192);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
} `
Upvotes: 0
Views: 2932
Reputation: 305
The mistake was from the server, when requesting this URL, it removes the header JSON,
so you need to add :
httpget.addHeader(new BasicHeader("Accept", "application/json"));
under the HttpGet
here is the full code:
HttpClient httpclient = new DefaultHttpClient();
// Prepare a request object
HttpGet httpget = new HttpGet(url);
httpget.addHeader(new BasicHeader("Accept", "application/json"));
//httpget.getParams().setParameter("format", "JSON");
Log.d("z",httpget.getURI().toString());
// Execute the request
HttpResponse response;
String result = null;
try {
response = httpclient.execute(httpget);
// Get hold of the response entity
HttpEntity entity = response.getEntity();
// If the response does not enclose an entity, there is no need
// to worry about connection release
if (entity != null) {
// A Simple Response Read
InputStream instream = entity.getContent();
result = convertStreamToString(instream);
Log.d("z",result);
// Closing the input stream will trigger connection release
instream.close();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is), 8192);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Upvotes: 1
Reputation: 629
You need to set name value pair. .follow this..
protected String doInBackground(String... params) {
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// REPLACE param [0] or one with your value of variable like _userid or etc..
nameValuePairs.add(new BasicNameValuePair("userid",params[0]));
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://thisismywebsite.com/mypage.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
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();
result=sb.toString().trim();
} catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
return result;
}
I hope, will works fine for you.
Upvotes: 0