0

" https://portal.sibt.nsw.edu.au/Default.asp "への HttpPost を作成しました。

HttpClient client = new DefaultHttpClient();
String URL = (String) "https://portal.sibt.nsw.edu.au/Default.asp";
HttpPost post = new HttpPost(URL);

バックグラウンドで実行する場合

HttpResponse response = client.execute(post);
Log.d("Response", response.toString());

logCat は、この「org.apache.http.message.BasicHttpResponse@413f0a28」を表示します

結果のページを表示するにはどうすればよいですか。PC からアクセスすると、この「https://portal.sibt.nsw.edu.au/std_Alert.asp」になるはずです。

4

3 に答える 3

2

response.toString()コンテンツではなくオブジェクト参照を出力します。必要なのは、応答の内容を読んで、それをに隠すことStringです。これを行う最も簡単な方法は、EntityUtils.toString()クラスを使用することです。次に例を示します。

HttpResponse response = client.execute(post);
String responseContent = EntityUtils.toString(response.getEntity());
Log.d("Response", responseContent );
于 2013-02-16T00:15:17.167 に答える
0

私は次のクラスでこれを行います。このライブラリをプロジェクトで使用することも、コードをコピーすることもできます。

https://github.com/aguynamedrich/beacon-utils/blob/master/Library/src/us/beacondigital/utils/StringUtils.java

重要な方法は次のとおりです。

public static String readStream(HttpResponse response) {
    String data = null;
    try
    {
        data = readStream(response.getEntity().getContent());
    }
    catch(Exception ex) { }
    return data;
}


public static String readStream(InputStream in)
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder sb = new StringBuilder();
    String line = null;
    try
    {
        while((line = reader.readLine()) != null)
        {
            sb.append(line + "\n");
        }
    }
    catch(Exception ex) { }
    finally
    {
        IOUtils.safeClose(in);
        IOUtils.safeClose(reader);
    }
    return sb.toString();
}

および別のクラス(上記で使用)から:

https://github.com/aguynamedrich/beacon-utils/blob/master/Library/src/us/beacondigital/utils/IOUtils.java

public static void safeClose(Closeable closeable)
{
    if(closeable != null)
    {
        try
        {
            closeable.close();
        }
        catch (IOException e) { }
    }
}
于 2013-02-16T00:14:19.117 に答える
-1

そこで toString が機能しないようにするには、応答ストリームから読み取る必要があります。

byte[] buffer = new byte[1024];
int bytesRead = response.getEntity().getContent().read(buffer, 0, 1024);
String responseContent = new String(buffer, 0, bytesRead);

バッファサイズを増やしたり、データをブロック単位で読み取ったりする必要があるかもしれませんが、これは必要なことです。

于 2013-02-16T00:05:15.107 に答える