Reputation: 1802
This is the code I'm working on:
private final static String SERVICE_URI = "http://restwebservice.com/test/Service.svc";
StringEntity entity;
String var;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callWebService();
Button btn = (Button) findViewById (R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(MainActivity.this, Test.class);
startActivity(i);
}
});
}
public void callWebService() {
try {
// make web service connection
HttpPost request = new HttpPost(SERVICE_URI + "/TestApplication");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
// Build JSON string
JSONStringer TestApp = new JSONStringer().object().key("id")
.value("1").key("name").value("manish").key("email")
.value("[email protected]").key("country")
.value("india").endObject();
entity = new StringEntity(TestApp.toString());
var = EntityUtils.toString(entity);
Log.d("****Parameter Input****", "Testing:" + TestApp);
request.setEntity(entity);
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
Log.d("WebInvoke", "Saving: " + response.getStatusLine().toString());
// Get the status of web service
BufferedReader rd = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
// print status in log
String line = "";
while ((line = rd.readLine()) != null) {
Log.d("****Status Line***", "Webservice: " + line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
I want to display them on a listview. Do you have any tutorials to get me started with? I'm new to web services. Thanks.
Upvotes: 1
Views: 8985
Reputation: 12191
One of the most popular tutirials on list views which may help you:
Steps to follow after parsing your json:
1. Map your json objects to pojo.
2. Store your pojo in an array list if many are there.
3. Create a list view with a custom adapter.
4. update your listview with answer from the pojo's that you have mapped with
notifyDatasetChanged
You can use jackson library to parse json with one line of code.
//1. Convert Java object to JSON format
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("c:\\user.json"), user);
//2. Convert JSON to Java object
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);
(follow this link for more on object mapping tutorial)
Upvotes: 2
Reputation: 8853
this is what i did to generate listview from my json response, basically i wrote values from my jon response to adapter and set it to my list view
try{
jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
json_data = jArray.getJSONObject(i);
Log.i("log_tag","dealid: "+json_data.getString("deal_id")+
", hotel name: "+json_data.getString("hotel_name")+
", location: "+json_data.getString("location")+
", website: "+json_data.getString("website")
);
}
json_data=new JSONObject();
String[] data=new String[jArray.length()];
planetList = new ArrayList<String>();
for(int i=0;i<jArray.length();i++)
{
json_data= jArray.getJSONObject(i);
data[i]=json_data.getString("deal_id");
Log.i("log_tag", "string "+data[i]);
planetList.addAll( Arrays.asList("Deal "+ (i+1)));
listAdapter = new ArrayAdapter<String>(this, R.layout.listrow, planetList);
runOnUiThread(new Runnable() {
public void run() {
list.setAdapter(listAdapter);
}
});
}
list.setOnItemClickListener(new OnItemClickListener() { //where to put this piece of code???
public void onItemClick(AdapterView<?> arg0, View arg1,
final int arg2, long arg3) {
Intent intent = new Intent(context,Finaldeal.class);
intent.putExtra("deal", json_data.toString());
startActivity(intent);
}
});
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
you can also refer to question i asked here
passing JSON object to another activity on list item click
Upvotes: 0