解決策を見つけるのを手伝ってください:
URL(以下)を呼び出すと、サーバーは次のようなものを提供します:
"Name", "Date" "Peter", "01.01.2013" "Paul", "12.12.2012"
したがって、サーバーは SQL テーブルをテキストとして提供します。これをリクエストして、文字列に変換しようとしました。しかし、アプリを実行すると、文字列は空です。
URL を正しくエンコードしましたか?
リクエストを正しく処理しましたか?
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() : "";
}
}
編集:
ブラウザでのサンプル リクエストを次に示します (この場合は行のみであるため、 , はありません)。