解释request.setURI

时间:2013-09-04 16:47:02

标签: java android http-get

我是Android的初学者: 我有一个QueryString = "http://www.google.com/Test/?Param1=ABC&Param2=DEF";

我想将此QueryString发送到服务器(发出服务器请求。将变量传递给asp.net页面并将参数存储到数据库)。

所以我使用GET将其发送到服务器。并在AsyncTask<String, Void, Long>

中执行此操作

我在StackOverflow上找到了这段代码。 (我对此代码做了一些修改)

protected Long doInBackground(String... params) {
        Long result = null;
        HttpResponse response = null;
        try {        
                HttpClient client = new DefaultHttpClient();
                HttpGet request = new HttpGet();
                request.setURI(new URI(params[0]));
                response = client.execute(request);
                result = 1L;
            } catch (URISyntaxException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
            return result;
        }

请解释这两行代码:

request.setURI(new URI(params[0]));
response = client.execute(request);

params [0]和

中的值是多少

response = client.execute(request);将变量发送到我的asp.net页面吗?

编辑 - 另一个问题 - 如果我向AsyncTask发送多个字符串

然后到每个HTTP-GET请求我可以通过'i'在循环中增加来做到这一点吗?

request.setURI(new URI(params[i]));

4 个答案:

答案 0 :(得分:1)

在使用之前,您应该阅读有关AsyncTask的内容:http://developer.android.com/reference/android/os/AsyncTask.html

 params is an array that you pase to the AsyncTask: 
 doInBackground(String... params)// String... params = String [] params

 response = client.execute(request);// yes it will... This line send your request to your service (php, c#, etc, etc)... and on your service you should handle the params your are passing

答案 1 :(得分:1)

当Java中的最后一个值作为(String x ...)传递时,它与说(String [] x)相同,传入一个数组。

调用过程有点不同,但是当你调用时,你可以传递一个字符串数组,也可以传递一个字符串列表,这些字符串将被制作成一个字符串数组。

例如,你可以这样调用上面的内容:

doInBackground(“a”,“b”,“c”),你会得到一个包含3个元素的aray params []。

你的问题 - params [0]将是“a”

答案 2 :(得分:1)

  

request.setURI(new URI(params [0]));

params是您获得的数组,其中包含传递给doInBackGround()的可变长度参数的所有值。使用与参数传递顺序对应的索引检索所需参数。

  

response = client.execute(request);

它将执行构造的请求,并与服务器端进行交互。

答案 3 :(得分:1)

在创建和调用asynctask执行的位置,您将参数(QueryString)提供给:

protected Long doInBackground(String... params) {

(String ... params)意味着该函数可以包含零个或多个字符串值,因此每当您向doInBackground提供一个字符串时,它都会收到一个字符串数组(在本例中为QueryString)。要获得Querystring,您可以使用 params [0]

response = client.execute(request);

执行创建的请求并在响应对象中获取响应。