我是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]));
答案 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);
执行创建的请求并在响应对象中获取响应。