httpsURLConnection.getInputStream() 挂起

发布于 2024-09-14 17:20:48 字数 971 浏览 2 评论 0 原文

我尝试为 android 构建一个 https 客户端,并且我需要获取 Servlet 的一些请求 但是当我使用 getInputStream 方法时,应用程序挂起。

仅当我调用该方法时才挂起,没有错误。

    String url = "https://.../Servlet";

  try {
   mPushLiteConnection = (HttpsURLConnection) new URL(url).openConnection();
   mPushLiteConnection.setDoOutput(true);
   mPushLiteConnection.setDoInput(true);
   mPushLiteConnection.setRequestMethod("POST");
   mPushLiteConnection.connect();

   subscribe();

   InputStream in = (InputStream)mPushLiteConnection.getInputStream();

   unsubscribe();

   mPushLiteConnection.disconnect();

  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

这只是为了检查呼叫,但它不起作用。 知道为什么它挂起并且什么也不告诉我吗?

订阅方法有效,当我用输入流注释掉该行时,服务器显示一切都是正确的。 我可以用 Firefox 尝试同样的操作,它可以工作,我可以看到请求。

我还将密钥库放入 TrustManager 中。

抱歉我的英语我希望我能解释得足够多。

谢谢

i try to build an https client for android and i need do get some request of an Servlet
but when i use the getInputStream method the applicaion hangs.

There is no error only hanging when i call the method.

    String url = "https://.../Servlet";

  try {
   mPushLiteConnection = (HttpsURLConnection) new URL(url).openConnection();
   mPushLiteConnection.setDoOutput(true);
   mPushLiteConnection.setDoInput(true);
   mPushLiteConnection.setRequestMethod("POST");
   mPushLiteConnection.connect();

   subscribe();

   InputStream in = (InputStream)mPushLiteConnection.getInputStream();

   unsubscribe();

   mPushLiteConnection.disconnect();

  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

this is only to check the call, but it didtn work.
Any idea why it hangs and tell me nothing?

the subscribe method works, when i comment out the line with the inputstream, the server show me all is correct.
I can try the same with the Firefox and it works and i can see the request.

i also put the keystore into the TrustManager.

sorry for my english i hope i explain it ennougth.

THX

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

遮了一弯 2024-09-21 17:20:48

我想我知道原因了!
getInputStream() 方法需要(为什么)contentLength!
在我想要连接的 servlet 中没有 contentLength 因为它是一个推送分块 servlet...它发送所有没有长度的 XML 片段。

所以.. HttpsURLConnection 对于分块来说没有用!

现在我尝试与 httpClient 进行相同的连接
我希望它能起作用......如果没有:我跳到公共汽车后面;)

I think i know the reason!
the method getInputStream() needs (why ever) the contentLength!
In the servlet i want to connect to is no contentLength couse it is an push chunked servlet... it sends all the time pieces of XML without length.

So.. HttpsURLConnection are not usefull for chunked!

Now i try the same connection with httpClient
i hope it works for it... if not: i jump behind the bus ;)

一影成城 2024-09-21 17:20:48

我使用不同的线程
是的,我在客户端安装了证书,

我有第二个连接来从另一个 servlet 加载列表,它工作正常,但我不需要输入流,只需要一个 SAX 解析器。
但我不能对这个 servlet 使用 SAX 解析器,因为我没有得到 XML,只有 XML 标签,没有开始文档标签,

也许你知道如何忽略开始文档标签?我不确定 SAX 是否需要它

i use a different Thread
and yes i installed the certificate on the client side

i have a second connection to load a list from another servlet and it works fine, but i dont need a InputStream for it only a SAX Parser.
But i cant use the SAX Parser for this servlet, couse i dont get an XML, only XML Tags without the Start Document Tag

maybie you know how to ignore the Start Document tag? I am not sure if i need it for SAX

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文