我无法获得套接字连接的响应,我不明白代码有什么问题。 我可以能够建立使用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