Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Http响应中的Get值解析为字符串_Java_Android_Parsing_Httpresponse - Fatal编程技术网

Java 将Http响应中的Get值解析为字符串

Java 将Http响应中的Get值解析为字符串,java,android,parsing,httpresponse,Java,Android,Parsing,Httpresponse,我正在使用ServerSocket监听Android应用程序上的某个端口,以便从服务器获得响应。 当服务器发送http响应时,我将其作为套接字接收,然后使用输入流获取数据 无论如何,一切都很好,我得到Http响应,但作为字符串,因为我正在读取输入流,然后将其解码为字符串: GET /?code={Some code} HTTP/1.1 Host: localhost:9004 Connection: keep-alive . . . {More headers} 我需要的是解析第一行代码,但我

我正在使用ServerSocket监听Android应用程序上的某个端口,以便从服务器获得响应。 当服务器发送http响应时,我将其作为套接字接收,然后使用输入流获取数据

无论如何,一切都很好,我得到Http响应,但作为字符串,因为我正在读取输入流,然后将其解码为字符串:

GET /?code={Some code} HTTP/1.1
Host: localhost:9004
Connection: keep-alive
.
.
.
{More headers}
我需要的是解析第一行代码,但我不想自己处理字符串。我相信有更简单的方法

ServerSocket serverSocket = new ServerSocket(9004);
serverSocket.setReuseAddress(true);
serverSocket.setReceiveBufferSize(1500);
if(!serverSocket.isBound()) {
    SocketAddress localAddress = new InetSocketAddress(9004);
    serverSocket.bind(localAddress);
}

Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int count = is.read(buffer);
String response = new String(buffer, "UTF-8");

// What should I do here??

serverSocket.close();

非常感谢

我假设您需要大括号之间的部分,因此我将使用此正则表达式和匹配器:\\{.*.\}

例如:

String response = new String(buffer, "UTF-8");
Pattern pattern = Pattern.compile("\\{(.*?)\\}");
Matcher matcher = pattern.matcher(response);
if (matcher.find())
{
    System.out.println(matcher.group(1));
}

我遵循的示例是。

您在字符串响应中查找什么?一个单词、一个URL或其他?我正在寻找通常在查询字符串中找到的代码。这是响应的第一行。现在我明白了:Http响应的内容是由你编码的吗?不是。它是由谷歌编码的。谢谢JaAd,我很感激。我更专注于使用其他东西,而不是自己解析字符串。我可以通过简单地使用String.indexof和String.substring找到代码,但我想避免这种情况。我正在考虑某个类,该类接收该响应字符串并从中生成httpresponse对象。@Tsikon我也在写同样的想法,但使用string.indexOf或string.subString甚至StringTokenizer有点野蛮!因此,您得到的响应用于另一个http请求?我想知道的是,是否有其他方法来获取响应,即作为HttpResponse对象,或者由其他SDK处理此响应字符串,并从该SDK的方法中获取所需的值。就像将json字符串解析为JSONObject一样。@Tsikon by SDK我猜您想要的是类或库。顺便说一下,试试这个:;或者这个答案。