[英]Java android project import NetworkOnMainThreadException
[英]Import Java Project in Android application?
即使在普通的android項目中無法識別java項目中的某些類,我是否可以在Android項目中使用Java項目? 例如javax.xml包?
我認為有兩種可能性:
但無論哪種方式,在我的Android應用程序中,那些在java中但在android中找不到的類是否可以正常? 這會有用嗎? 謝謝。
我創建了JavaProject,然后將其作為參考導入到我的Android項目中。 我得到了一個我沒想到的錯誤,它無法識別我的Java項目中的.classes。
如果您正在使用Eclipse(使用ADT插件),則可以在Android項目的構建路徑中引用Java項目。 這會將這些類打包在.apk輸出中,並允許您在應用中使用它們。
正如你在評論中指出的那樣; 將Java項目作為Android庫引用將不適用於您的情況,因為javax。*包的存在將導致Eclipse中的編譯時錯誤。 在這種情況下,您需要選擇選項1並從Java項目構建一個Jar文件,並按照此處的說明包含它。 這樣, 除非您嘗試使用它們,否則需要javax。*的類文件不應產生任何編譯/運行時錯誤。 無論哪種方式,使用Java構建路徑將無法正常工作 - 類文件不會以這種方式捆綁。
Android平台提供了一些javax.xml ,但不是整個包(請閱讀本文檔以獲取更多詳細信息)。 通常最簡單的解決方案是編寫一個Android等效的受影響的Java代碼,不需要缺少依賴項,並橋接 2個實現,以便為每個項目使用正確的實現。
它終於奏效了,我最大的問題是我傳遞給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,我收到了我需要的信息。 一個問題仍然是響應顯然太大(並且它不會在此停止)所以我的響應被截斷了。 現在努力解決這個問題。 我真的希望這有助於某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.