訪問服務器套接字我想看到確切的標題,同時使Web請求,所以我想我只是在我的本地機器上創建一個簡單的Java應用程序服務器,並有我的Android應用程序是送我的android應用程序打電話給它。然後只需將請求轉儲到控制檯,以便我可以看到應用程序發送的內容。但是,當我嘗試連接時,應用程序掛起並停止響應。不能與Android應用
我創建了一個簡單的服務器將只接受一個連接,並sysouts它得到的數據。服務器運行良好,如果我從我的計算機上的網絡瀏覽器中打開它,則會從Web瀏覽器請求中打印標題。所以我知道服務器工作正常。
下面是從我的應用程序的代碼:
URL url = new URL("http://192.168.1.11:9000");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.connect();
PrintWriter writer = new PrintWriter(connection.getOuputStream(), true);
writer.write("hi");
writer.close();
簡單。畢竟,我只想要標題。現在我開始沒有帖子和使用:
URL url = new URL("http://192.168.1.11:9000");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
in.close();
但這並不起作用。該應用程序停止響應getInputStream()請求。它只是停下來,不會繼續。服務器也沒有獲得連接請求。
所以在所有的應用程序被阻止的URL連接的的getInputStream,我想不通爲什麼。
現在我已經搜索了一段時間,發現這些:
Android app communicating with server via sockets
socket exception socket not connected android
Android embedded browser cant connect to server on LAN
Using java.net.URLConnection to fire and handle HTTP requests
Client Socket cannot connect to running Socket server
但沒有什麼幫助。我沒有像這個問題似乎是每個人都使用本地主機,我已經嘗試使用Android 10.0.0.2,但也不工作。
我不是限制任何東西(我回來了)在網絡上,我已經使用順序顯示第一組的代碼將消息發送到我的服務器嘗試,但甚至沒有工作(它運行良好但服務器從來沒有得到一個客戶端,這是否工作?)。
我同時使用的URLConnection和HttpURLConnection的嘗試,他們都有同樣的問題。
我也用我的應用程序的Internet權限,所以它也有所需的權限。
在這一點上我很茫然。爲什麼我無法打電話給我的服務器?
編輯
我使用機器人文檔確切的代碼:
private String downloadUrl(String myurl) throws IOException {
InputStream is = null;
// Only display the first 500 characters of the retrieved
// web page content.
int len = 500;
try {
URL url = new URL("http://10.0.2.2:9000");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
int response = conn.getResponseCode();
is = conn.getInputStream();
// Convert the InputStream into a string
String contentAsString = readIt(is, len);
return contentAsString;
// Makes sure that the InputStream is closed after the app is
// finished using it.
} finally {
if (is != null) {
is.close();
}
}
}
但即使不工作。它仍然掛起。只有現在它掛在getResponseCode()上。然後引發超時異常。服務器從來沒有收到請求。
我很確定你的logcat告訴你到底是什麼問題。 –
因爲第一組代碼不會引發任何錯誤,所以logcat實際上什麼都沒說。 –
當你說你可以通過網絡瀏覽器訪問網頁時,很好,你的意思是說你可以通過Android設備上的默認網頁瀏覽器來訪問網頁嗎?或者,網絡瀏覽器使用了您的臺式電腦之一? –