I have an application in Android, in which I were reading files from the remote server, code for reading file is given below;
URI uri = null; try { uri = new URI("http://192.168.1.116/Server1/Users.xml"); } catch (URISyntaxException e) { e.printStackTrace(); } HttpGet httpget = new HttpGet(uri); httpget.setHeader("Content-type", "application/json; charset=utf-8"); httpget.setHeader("host", "192.168.1.116"); HttpResponse response = null; try { response = httpClient.execute(httpget); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } HttpEntity responseEntity = response.getEntity(); String result = null; try { result = EntityUtils.toString(responseEntity); Log.d("SERVER1", result); } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
Now all the remote files are behind proxy (Microsoft ISA Server) which required authentication to access the files. Please guide me how I can pass authentication parameters from android to access the files.
I have tried the following codes but useless,
URL uri = null; try { uri = new URI("http:// 192.168.1.116/CookieAuth.dll?Logon"); } catch (URISyntaxException e) { e.printStackTrace(); } DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.getCredentialsProvider() .setCredentials( AuthScope.ANY, new NTCredentials(username, password, deviceIP, domainName)); HttpPost httppost = new HttpPost(uri); httppost.setHeader("Content-type", "application/x-www-form-urlencoded"); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("curl", "Z2FServer1/users.xmlZ2F")); params.add(new BasicNameValuePair("formdir", "3")); params.add(new BasicNameValuePair("username", "test")); params.add(new BasicNameValuePair("password", "test")); UrlEncodedFormEntity ent = null; try { ent = new UrlEncodedFormEntity(params, HTTP.UTF_8); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } httppost.setEntity(ent); try { response = httpclient.execute(httppost); Log.i("Test", response.getStatusLine().toString()); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); result = convertStreamToString(instream); Log.d("ISA Server", result); instream.close(); } } catch (Exception e) { e.printStackTrace(); }
But it’s giving HTTP1.1
500 Internal Server Error. I have also tried following link but same error
https://stackoverflow.com/a/10937857/67381
Advertisement
Answer
In my case i use
public static DefaultHttpClient getClient(String username, String password, Integer timeOut) { HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, timeOut); HttpConnectionParams.setSoTimeout(httpParams, timeOut); DefaultHttpClient retHttpClient = new DefaultHttpClient(httpParams); if (username != null) { retHttpClient.getCredentialsProvider().setCredentials( new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials(username, password)); } return retHttpClient; }
Try, may be works.
P.S.
It’s not for ISA, for MS C# WebService Application, but maybe…