2013-05-10 7 views
5

Ho un'applicazione in Android, nella quale stavo leggendo i file dal server remoto, il codice per la lettura del file è riportato di seguito;Autenticazione Microsoft ISA Server in Android

  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(); 
      } 

Ora tutti i file remoti sono dietro proxy (Microsoft ISA Server) che ha richiesto l'autenticazione per accedere ai file. Per favore mi guida come posso passare i parametri di autenticazione da Android per accedere ai file.

Ho provato i seguenti codici, ma inutile,

  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(); 
      } 

Ma è dando HTTP1.1 500 Internal Server Error. Ho anche provato seguente link, ma lo stesso errore https://stackoverflow.com/a/10937857/67381

risposta

1

Nel mio caso io uso

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; 
} 

prova, può essere opere.

P.S.

non è per ISA, per MS C# servizio Web Application, ma forse ...

+0

sto ottenendo HTTP/1.1 500 (errore non specificato). – Siddiqui

+0

Registri del server? Potrebbe essere qui eccezione? –