1

这是我正在处理的代码:

   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("androidhub4you@gmail.com").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();
    }

  }

我想在列表视图上显示它们。你有什么教程可以让我开始吗?我是网络服务的新手。谢谢。

4

2 回答 2

2

列表视图上最受欢迎的教程之一,它可以帮助您:

-拉维的博客

解析 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

您可以使用 jackson 库通过一行代码解析 json。

 //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);

(点击链接了解更多关于对象映射教程)

于 2013-06-08T07:40:17.227 回答
0

这就是我从我的 json 响应生成列表视图所做的,基本上我将我的 jon 响应中的值写入适配器并将其设置为我的列表视图

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());
}

你也可以参考我在这里问的问题

将 JSON 对象传递给列表项单击上的另一个活动

于 2013-06-08T07:42:54.437 回答