请帮我找到解决方案:
如果我调用 URL(如下),服务器会为我提供如下内容:
"Name", "Date" "Peter", "01.01.2013" "Paul", "12.12.2012"
所以服务器为我提供了一个 SQL 表作为文本。我试图请求这个并将其转换为字符串。但是当我运行应用程序时,字符串是空的。
我对 URL 进行了正确编码吗?
我是否正确管理了请求?
这是网址:
http://IP/query.html?sql="select * from ADAnreden"
这是由 Log.d 发布的 URL:
http://IP/query.html?sql=%22select+*+from+ADAnreden%22
这是我的代码:
import java.io.BufferedInputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import android.util.Log;
public class Reader {
private String result = "leer";
String strUrl = "getURL: fehlgeschlagen";
private HttpURLConnection urlConnection;
public String getStringFromServer(){
String ip = "XYZ";
try {
String query = URLEncoder.encode("\"select * from ADAnreden\"", "utf-8");
strUrl = "http://"+ip+"/query.html?sql=" + query;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d(PACKAGE_NAME, "After getURL"+strUrl);
Thread thread = new Thread()
{
@Override
public void run() {
try {
URL url = new URL(strUrl);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
result = convertStreamToString(in);
} catch (Exception e) {
e.printStackTrace();
} finally {
urlConnection.disconnect();
}
}
};
thread.start();
return result;
}
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}
编辑:
这是浏览器的示例请求(在这种情况下只有行,所以没有 , )