我HTTPURLConnection
用来连接到Web服务.我知道如何使用,HTTPURLConnection
但我想了解它是如何工作的.基本上,我想知道以下内容:
HTTPURLConnection
尝试建立与给定URL的连接?getOutputStream
和getInputStream
外行的任期?我注意到,当我试图连接到服务器宕机,我得到Exception
的getOutputStream
.这是否意味着HTTPURLConnection
我只会在调用时开始建立连接getOutputStream
?怎么样getInputStream
?因为我只能得到响应getInputStream
,那么这是否意味着我还没有发送任何请求getOutputStream
但只是建立连接?HttpURLConnection
我调用时是否回到服务器请求响应getInputStream
?openConnection
只是创建一个新的连接对象,但尚未建立任何连接?java inputstream outputstream urlconnection httpurlconnection
try-catch
我的代码中有一个声明.在我的catch块中,我打电话e.getMessage()
来打印异常消息.但是,e.getMessage
保持返回空值.有趣的是,当我打电话给e.printStackTrace,
我打印堆栈跟踪没有问题.
以下是我的代码:
try
{
console = new BufferedReader(new InputStreamReader(httpsURLConnection.getInputStream()));
}catch(Exception e)
{
Log.d("Error", "Error Message: " + e.getMessage()); //e.getMessage is returning a null value
e.printStackTrace(); //this works. is displaying a SocketTimeOutException
}
Run Code Online (Sandbox Code Playgroud)
可能是我的问题的原因是什么?我该如何解决?
如何在JAX-WS Web服务上抛出自定义soap错误?我怎么可以指定faultCode
,faultString
和detail
SOAP错误的?是否可以设置detail
as bean 的值而不是String
?
请注意,我正在使用代码优先方法开发.
在此之前,我想让您知道我已经可以连接到Web服务服务器了.我问这个问题是因为我希望深入了解wsimport生成的客户端是如何工作的.根据我的研究,wsimport使用JAXWS.请注意,我不了解JAXWS.
我使用wsimport生成了我的客户端.我使用的WSDL来自Axis2 Web服务,由Axis2自动生成.下面的类是wsimport的结果:
下 com.datamodel.xsd
DataBeanRequest.java
DataBeanResponse.java
ObjectFactory.java
package-info.java
下 com.service
MyWebService.java
MyWebServicePortType.java
MyMethod.java
MyMethodResponse.java
ObjectFactory.java
package-info.java
使用上面的类,我可以告诉它com.datamodel.xsd
包含Web服务服务器使用的bean(不包括ObjectFactory
和package-info
).同时,MyMethod
和MyMethodResponse
也用于设置的web服务方法/操作的请求和响应参数豆.
以下是我的问题:(如果你不知道我的一些问题的答案,你真的不必回答所有问题.:)请随时分享你认为我可能会觉得有用的任何信息.)
我是否正确
MyWebService
,它包含一个注释,指的是我用来生成客户端的WSDL的绝对位置.wsdllocation
在客户端中指定的相关性是什么?客户如何使用该信息?wsimport
命令有一个wsdllocation
属性,其中wsdllocation
可以指定值.)Java的JAX-WS和Metro有什么区别?它们是两个不同的JAX-WS实现相同吗?
根据我的研究,JAX-WS已经是JDK 6的一部分.但是,JAX-WS没有附带标准的JDK包,所以我找了一个Java EE jar.但是,似乎Oracle不承载已编译的Java EE jar,而是提供Glassfish作为Java EE服务器.
我能够在Glassfish上运行我的Web服务.Glassfish使用什么JAX-WS实现?由于它是托管在Oracle上的,我假设它使用Java的JAX-WS实现,它应该是JDK 1.6的一部分?我的假设是正确的吗?此外,要运行基于JAX-WS的Web服务,我需要下载JAX-WS jar.我找到了Metro.但在它的页面上,我看到地铁的链接是Glassfish的子链接.所以我现在很困惑.Glassfish使用Metro吗?或者Glassfish使用Java的JAX-WS?
Metro和Java的JAX-WS是一样的吗?
如果我尝试使用HttpURLConnection
和连接到"https"有什么区别HttpsURLConnection
?
我能够使用两者连接到"https" HttpURLConnection
,HttpsURLConnection
所以我很困惑.如果我使用的话,我想我只能建立与"https"的连接HttpsURLConnection?
以下是我的一些问题:
SSLSocketFactory
与HostnameVerifier
我HttpURLConnection
同时连接的"https"开头,怎么SSLSocketFactory
和HostnameVerifier
我使用的?我想检查一下DexGuard是如何工作的,但它似乎没有免费试用版.
DexGuard可以加密Android应用程序吗?或者只是简单地混淆代码?DexGuard加密如何工作?如果您可以在反编译之前和之后提供使用DexGuard运行的示例应用程序的代码,那就太棒了.
如果已删除soap信封,则JAXB只能解组XML.但是,我试图解组的SOAP响应在soap信封上有其名称空间声明.如果我删除soap信封,名称空间声明也将被删除.因此,标签的前缀将指无.这会导致JAXB抛出错误.如果在SOAP信封上声明名称空间,如何使用JAXB解组SOAP响应?
我需要解组的类似XML样本如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.com/">
<soapenv:Body>
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
如果我移除肥皂信封会发生这种情况:
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
Run Code Online (Sandbox Code Playgroud)
如果我删除了soap信封,名称空间声明也将消失.JAXB将无法解组上述xml,因为缺少前缀"ns"的命名空间定义.因此,它将返回"The prefix "ns" for element "ns:getNumberResponse" is not bound."
错误消息.我如何解决它?
请注意我使用的是JDK 1.5.我不确定在JDK 1.6中是否有办法解决这个问题.我能够使用JAXB,因为我下载了使用JAXB所需的jar.
我正在使用ActionBarSherlock并且我试图隐藏我的应用程序的标题栏但是每当我这样做时,我NullPointerException
在访问" ActionBar
如何删除/隐藏标题栏" 时会得到一个?请注意,我不是指操作栏的标题.我指的是操作栏上方的标题栏.我在Android 2.3设备上运行我的应用程序.
下面是我的代码:(我的课程延伸SherlockFragmentActivity
.)
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Sherlock);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here.
//...
setContentView(R.layout.tab_navigation);
Run Code Online (Sandbox Code Playgroud) 我有一个连接到Internet的Android应用程序.我正在捕获所有可能的连接方案,并注意到当我没有Internet连接时,UnknownHostException
就是thrown
.我在这里有点困惑,因为获得UnknownHostException
意味着应用程序能够连接到Internet但无法找到给定的URL.
我得到了正确的例外吗?你能解释一下我为什么要UnknownHostException
这个?
此外,您能告诉这些场景的具体例外情况:
如果你能给我更多场景和例外,我也将不胜感激.我必须捕获所有可能的连接并根据连接类型错误显示最合适的消息.
java ×6
android ×5
exception ×3
jax-ws ×3
web-services ×2
axis2 ×1
connection ×1
dexguard ×1
encryption ×1
glassfish ×1
inputstream ×1
jaxb ×1
outputstream ×1
proguard ×1
soap ×1
soapfault ×1
titlebar ×1
tomcat ×1
wsimport ×1
xml ×1