我正在使用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();
非常感谢!
答案 0 :(得分:0)
我假设你想要括号之间的部分,所以我将使用这个正则表达式Matcher
:"\\{(.*?)\\}"
。
例如:
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));
}
我按照this StackOverflow link的例子。