这是我的代码:
@Override
protected String doInBackground(String... params) {
try {
String a = "";
for(int i = 0; i < params.length; i++) {
a += params[i];
if(params[i++] != null){
a += "%20";
}
}
url = new URL("mysite/search.php?q="+a);
我不明白为什么如果我写:&#39;这本书&#39;
我看到了这些结果:&#39;这本书......&#39; ,&#39;表...&#39;,&#39;手机......&#39;。
问题似乎是这个代码只适用于params [0],并且只能看到&#39;&#39;或者&#39;&#39;并且无法预览&#39;。
答案 0 :(得分:2)
首先,您需要url-encode的字符多于空格。
但是,我认为你不需要循环任何东西。 Java有可以做到这一点的类。String searchFor = URLEncoder.encode("the book", "utf-8"); // "the+book"
注意:取决于您的搜索引擎,但+
和%20
的处理方式应相同。
因此,假设您使用的是task.execute("the book")
,那么只需执行
@Override
protected String doInBackground(String... params) {
String a = URLEncoder.encode(params[0], "utf-8");
url = new URL("mysite/search.php?q="+a);
尽管如此,我更喜欢这种方式来构建url字符串。
String searchFor = URLEncoder.encode(params[0], "utf-8");
Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
.authority("mysite")
.appendPath("search.php")
.appendQueryParameter("q", searchFor);
url = new URL(builder.build().toString());
如果您认为编码+
会使某些内容搞砸,请参阅此
URLEncoder.encode("the+book", "utf-8"); // the%2Bbook
答案 1 :(得分:0)
作为cricket_007评论,试试这段代码:
{{1}}