我已經接管了一個android應用程序,該應用程序可以拍照並將它們附加到公司主基地的較大軟件系統的作業 - 直到最近它一直運行良好。Apache HTTP客戶端僅針對LG G3執行的Android例外6.0
看來,只有對已升級到Android 6.0 LG G3手機有這prodecure異常:
public static String frapiGetRequest(String transaction, ArrayList<Content> parameters) {
StringBuilder builder = new StringBuilder();
DefaultHttpClient client = new DefaultHttpClient();
HttpHost targetHost = new HttpHost(HOST,PORT,SCHEME);
String url = SCHEME + "://" + HOST + "/" + transaction;
if (parameters != null && parameters.size() > 0) {
url += "?" + buildParameterString(parameters);
}
Utilities.bLog(TAG, "Making FrapiRequest -- " + url);
try {
HttpGet getRequest = new HttpGet(url);
client.getCredentialsProvider().setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials(USERNAME, PASSWORD));
/**Exception Occurs Here**/
HttpResponse response = client.execute(getRequest);
StatusLine statusLine = response.getStatusLine();
int statusCode = -1;
statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
Utilities.bLog(TAG,"Frapi Request Succeeded");
}
else {
Utilities.bLog(TAG, "Frapi Request Failed: " + url);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
Utilities.eLog(e);
} catch (IOException e) {
e.printStackTrace();
Utilities.eLog(e);
} catch (Exception e) {
e.printStackTrace();
Utilities.eLog(e);
}
return builder.toString();
}
堆棧跟蹤
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at org.apache.http.impl.auth.DigestScheme.isGbaScheme(DigestScheme.java:210)
at org.apache.http.impl.auth.DigestScheme.processChallenge(DigestScheme.java:176)
at org.apache.http.impl.client.DefaultRequestDirector.processChallenges(DefaultRequestDirector.java:1097)
at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:980)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:490)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
at com.rossware.sd_quickpics.Utilities.frapiGetRequest(Utilities.java:111)
at com.rossware.sd_quickpics.Business.authenticate(Business.java:83)
at com.rossware.sd_quickpics.MainActivity$AuthenticateAsyncTask.doInBackground(MainActivity.java:320)
at com.rossware.sd_quickpics.MainActivity$AuthenticateAsyncTask.doInBackground(MainActivity.java:307)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
這一直沒有報告任何其他電話..我會用HttpURLConnection
但它不支持摘要式身份驗證(這是目前我們的frapi服務器正在使用)
我只是不確定是否有任何方法可以繼續使用我們擁有的身份驗證機制,或者如果我必須在frapi中實現不同的協議(希望不會破壞我們現有的所有應用程序..),或者如果有另一種方法用這些手機繞過這個問題的人?這個問題是相當有限的(一個客戶誰擁有大約10個手機,而不是世界末日,但絕對是他們的主要問題)
有什麼在android中,我可以做解決這種問題的受影響用戶?看起來代碼不正確?
有關更多信息,我們將這些交易的frapi身份驗證更改爲public,並且(除了隨機dns問題),在沒有摘要身份驗證的電話上,它似乎正常運行。當然,這意味着交易......並不像我想的那麼安全,但至少是應用程序的功能。 – wizebin
LG G4 Stylus,LG G4和Oneplus One在使用Android 6連接AVM FRITZ!Box路由器時出現同樣的錯誤。我還沒有解決。 – almisoft
@wizebin你能解決這個問題。我也在LG手機上面臨同樣的問題。恰好在相同的地方和相同的錯誤日誌! KIndly讓我知道如果你找到任何解決方案。我也在使用摘要式身份驗證 – Sunil