2013-05-10 15 views
5

Ich habe eine Anwendung in Android, in der ich Dateien vom Remote-Server gelesen habe, Code zum Lesen der Datei ist unten angegeben;Microsoft ISA Server-Authentifizierung 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(); 
      } 

Jetzt sind alle Remote-Dateien hinter Proxy (Microsoft ISA Server), die Authentifizierung für den Zugriff auf die Dateien benötigt. Bitte führen Sie mich, wie ich Authentifizierungsparameter von Android weitergeben kann, um auf die Dateien zuzugreifen.

Ich habe die folgenden Codes versucht, aber nutzlos,

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

Aber es ist HTTP1.1 500 Internal Server Error geben. Ich habe auch versucht folgenden Link aber denselben Fehler https://stackoverflow.com/a/10937857/67381

Antwort

1

In meinem Fall verwende ich

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

Versuchen kann Werke sein.

P.S.

Es ist nicht für ISA, für MS C# WebService Anwendung, aber vielleicht ...

+0

Ich erhalte HTTP/1.1 500 (nicht angegebener Fehler). – Siddiqui

+0

Serverprotokolle? Kann hier Ausnahme sein? –