我無法獲得套接字連接的響應,我不明白代碼有什麼問題。 我可以能夠建立使用IP地址和端口號的套接字連接,它是進入沒有在套接字連接中得到響應
if (nsocket.isConnected()) {}
當我通過telnet試過我能得到響應。但輸入有一些其它參數,如:
POST /的setMap HTTP/1.1 主機:192.168.1.1 內容類型:應用/ JSON;字符集= UTF-8 內容長度:1234
{ 「CMD」: 「request_get_file_list」, 「驗證」: 「CVS」}
我不知道如何以包括像內容類型的連接屬性,在我的代碼中的長度。
下面是代碼:
public class WebService {
public static String devicelisting() {
Socket nsocket;
String response = null;
try {
nsocket = new Socket("192.168.1.1", 6666);
if (nsocket.isConnected()) {
JSONObject json = new JSONObject();
json.put("cmd", "request_get_file_list");
json.put("verification", "CVS");
Log.i("AsyncTask", "doInBackground: Creating socket");
// nsocket = new Socket();
OutputStreamWriter out = new OutputStreamWriter(nsocket.getOutputStream(), StandardCharsets.UTF_8);
out.write(json.toString());
Log.i("Webservice", "json.toString"+json.toString());
InputStream in = new BufferedInputStream(nsocket.getInputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(in));
StringBuilder stringbuilder = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
stringbuilder.append(line);
Log.i("line", "line.line"+line);
}
response = stringbuilder.toString();
Log.i("Response", response);
}
else{
Log.i("Response", "not connected");
}
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return response;
}
請幫我找到問題。我很困難。請幫我解決問題
可能是你可以嘗試「抓包」的應用程序,看看是否有任何響應,你無法看到或收到您的應用程序內的,但實際上,你收到您的設備 –
輸入是一個POST?如果您正在實施HTTP,則在開始之前需要熟悉RFC 2616。太寬泛。 NB'Socket.isConnected()'在你測試的時候不可能是假的。不要寫無意義的代碼。 – EJP
@EJB對不起,我是socket連接的新手。那麼我該怎麼做才能解決這個問題? – Liya