以 Stream 方式讀取內容
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = "http://google.com.tw/";
Request request = new Request.Builder().url(url).build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, final IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(final Response response) {
try {
// 設定緩衝區大小
byte[] buffer = new byte[1024];
// 取得輸入流
InputStream input = response.body().byteStream();
// 儲存不定數量的 byte 陣列,最後再一次寫出轉成字串,
// 通常是因為要寫入檔案才用 Stream 讀取,這裡為求簡化而使用此方式。
ByteArrayOutputStream byteBuilder = new ByteArrayOutputStream();
while (input.read(buffer) != -1) {
byteBuilder.write(buffer);
}
// 將所有內容以 byte 陣列轉出,再使用 String 的建構式轉為字串。
String result = new String(byteBuilder.toByteArray());
Log.d("MainActivity", result);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}