【问题标题】:Parsing Get values from Http Response as string解析从 Http 响应中获取值作为字符串
【发布时间】:2014-03-08 13:14:41
【问题描述】:

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

无论如何,一切都很好,我得到了 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();

非常感谢!

【问题讨论】:

  • 你在寻找什么字符串响应?一个单词、一个 URL 还是其他?
  • 我正在寻找通常在查询字符串中找到的代码。这是响应的第一行。
  • 现在我明白了:Http响应的内容是你编码的吗?
  • 没有。它由谷歌编码

标签: java android parsing httpresponse


【解决方案1】:

我假设你想要大括号之间的部分,所以我将使用这个正则表达式和这个 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的例子。

【讨论】:

  • 感谢 JaAd,我很感激。我更专注于使用其他东西,而不是自己解析字符串。我可以通过简单地使用 String.indexof 和 String.substring 找到代码,但我想避免这种情况。我正在考虑某个类接收该响应字符串并从中创建一个 httpresponse 对象。
  • @Tsikon 我写的是同样的想法,但是使用 String.indexOf 或 String.subString 甚至 StringTokenizer 有点野蛮!所以你得到的响应被用于另一个 http 请求?
  • 我想知道是否有另一种方法来获取响应(即作为 HttpResponse 对象),或者让这个响应字符串由其他一些 SDK 处理并获取值 I需要从这个 SDK 的一个方法。就像将 json 字符串解析为 JSONObject 一样。
  • @Tsikon by SDK 我猜你想要一个类或一个库。顺便试试这个:developer.android.com/reference/org/apache/http/client/utils/…;或者这个答案stackoverflow.com/questions/13592236/…
猜你喜欢
  • 2014-09-03
  • 2021-06-03
  • 2011-03-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2023-03-27
  • 2018-05-15
相关资源
最近更新 更多