即使在普通的android项目中无法识别java项目中的某些类,我是否可以在Android项目中使用Java项目?例如javax.xml包?
我认为有两种可能性:
但无论如何,在我的Android应用程序中,那些在java中但在android中找不到的类是否可以正常?这会有用吗?谢谢。
我制作了JavaProject,然后将其作为参考导入我的Android项目中。我得到了一个我没想到的错误,它无法识别我的Java项目中的.class。
答案 0 :(得分:1)
如果您正在使用Eclipse(使用ADT插件),则可以在Android项目的构建路径中引用Java项目。这将在.apk输出中打包这些类,并允许您在应用程序中使用它们。
正如你在评论中指出的那样;将Java项目作为Android库引用将不适用于您的情况,因为javax。*包的存在将导致Eclipse中的编译时错误。在这种情况下,您需要选择选项1并从Java项目构建一个Jar文件并将其包含在as explained here中。这样,需要javax。*的类文件不会产生任何编译/运行时错误,除非您尝试使用它们。无论哪种方式,使用 Java构建路径都不会按预期工作 - 类文件不会以这种方式捆绑。
Android平台提供some of javax.xml,但不提供整个软件包(有关详细信息,请阅读this document)。通常最简单的解决方案是编写一个Android等效的受影响的Java代码,不需要缺少依赖项,并bridge这两个实现,因此每个项目都使用正确的。
答案 1 :(得分:0)
它终于奏效了,我最大的问题是我传递给HttpPost的网址和SAP的ksoap2根本不适用于我。
private void testCallingService() {
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(
new AuthScope("ip here", port here),
new UsernamePasswordCredentials(username, password));
try {
String buffer = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='namespace'><soapenv:Header/><soapenv:Body><urn:methodname><USERNAME>test</USERNAME></urn:methodname></soapenv:Body></soapenv:Envelope>";
HttpPost httppost = new HttpPost(url);
StringEntity se = new StringEntity(buffer, HTTP.UTF_8);
se.setContentType("text/xml");
httppost.setHeader("Content-Type",
"application/soap+xml;charset=UTF-8");
httppost.setEntity(se);
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope("ip", port),
new UsernamePasswordCredentials(username, password));
httpclient.setCredentialsProvider(credsProvider);
BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient
.execute(httppost);
if (httpResponse.getStatusLine() != null) {
System.out.println("Http status: "
+ httpResponse.getStatusLine());
}
RequestLine requestLine = httppost.getRequestLine();
String response = getResponseBody(httpResponse); // read server response. response.getEntity().getContent();...
System.out.println("response: " + response);
} catch (IOException e) {
// TODO Auto-generated catch block
}
httpclient.getConnectionManager().shutdown();
}
所以,我自己构建了SOAP信封,将在最近的将来尝试停止这样做。制作CredentialsProvider的实例并设置我的用户/通行证详细信息。服务器的状态是200,我收到了我需要的信息。一个问题仍然是响应显然太大(并且它不会在此停止)所以我的响应被截断了。现在努力解决这个问题。 我真的希望这有助于某人。