如何从Android中返回XML或JSON的URL获取数据

时间:2013-11-15 17:36:32

标签: java android xml json web-services

我是Android的新手,但我在Android中使用XML解析器来解析我的应用程序中的RSS。 现在我想向我的服务器发送和接收新的应用程序数据。

我开发了我的Web API的服务器端,对其进行了测试,到目前为止它正在运行。所以当我打电话给这样的网址时

http://URL/api/getQuery/value1/value2

我得到这个XML(并根据需要使用JSON)。

<ArrayOfstring>
  <string>4.5</string>
  <string>Glu Mobile</string>
  <string>4.2.0</string>
  <string>1392/07/18</string>
  <string>500</string>
  <string>112MB</string>
  <string>free</string>
  <string>creator</string>
  <string>describtion</string>
  <string>similarapp</string>
</ArrayOfstring>

现在我想调用该url并接收XML或JSON字符串,然后将其解析为数组或列表。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用排球图书馆...这对你来说非常有用......你可以找到链接......下载并检查一下你第一次做第一次耐心是非常容易的......

https://github.com/ogrebgr/android_volley_examples

您可以使用 Asynctask 从服务器获取JSON数据。

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings.System;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;

public class AsyncTaskActivity extends Activity implements OnClickListener {

Button btn;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn = (Button) findViewById(R.id.button1);
    // because we implement OnClickListener we only have to pass "this"
    // (much easier)
    btn.setOnClickListener(this);
}

public void onClick(View view) {
    // detect the view that was "clicked"
    switch (view.getId()) {
    case R.id.button1:
        new LongOperation().execute("");
        break;
    }
}

private class LongOperation extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
         String url = params[0];

        HttpClient httpClient = new DefaultHttpClient();
        HttpGet request = new HttpGet(url);           
        request.setHeader("Content-Type", "text/xml");
        HttpResponse response;
        try {
            response = httpClient.execute(request);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        // Result is in String Format
        // you can use JSON api to convert into JSONObject

    }

    @Override
    protected void onPreExecute() {}

    @Override
    protected void onProgressUpdate(Void... values) {}
}

}