2012-03-12 4 views
0
StringEntity entity = new StringEntity("<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><Login xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\"><username>"myusername"</username><password>"mypassword"</password></Login></soap:Body></soap:Envelope>"); 
    entity.setContentEncoding("utf-8"); 

    post1.setEntity(entity); 
    System.out.println("calling service"); 
    String response = client.execute(post, handler); 

    System.out.println("response is "+response); 

Я получаю ответ XML как:Доступ к Sharepoint WebServices с помощью Java

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <LoginResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <LoginResult> 
     <ErrorCode>PasswordNotMatch</ErrorCode> 
     <TimeoutSeconds>0</TimeoutSeconds> 
     </LoginResult> 
    </LoginResponse> 
    </soap:Body> 
</soap:Envelope> 

пожалуйста кто-нибудь сказать мне, где я geetting неправильно? Спасибо заранее!

+1

вы отсутствующего любые требования безопасности? Я имею в виду, что ваш веб-сервис принимает пароль в текстовом или хэшированном виде? – waqaslam

+0

вы можете рассказать, как отправить его в хэшированном формате? –

ответ

0

Используйте любой из следующих способов для отправки пароля в хэш-формате. Но прежде, проверьте, принимает ли ваш сервер хэшированные пароли или нет, и если он делает, то какой тип (SHA/MD5).

для SHA-256:

/** 
* Perform SHA-256 hash on the given string. 
* It returns a hashed string as Base64 string. 
* @param str String to be hashed in SHA-256 
* @return Base64 string if hashed successfully, else NULL 
*/ 
public static String getHashSHA256(String str){ 
    String hash = null; 

    try{ 
     MessageDigest digest = null; 

     try { digest = MessageDigest.getInstance("SHA-256"); } 
     catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
      return hash; 
     } 

     digest.reset(); 
     hash = Base64.encodeToString(digest.digest(str.getBytes()), 
        Base64.DEFAULT).trim(); 
     digest = null; 
    } 
    catch (Exception e) { 
     Log.e("SHA-256", "Error in getHashSHA256() due to -> " + e.toString()); 
    } 

    return hash; 
} 

для MD5:

/** 
* Perform MD-5 hash on the given string. 
* It returns a hashed string as Base64 string. 
* @param str String to be hashed in MD5 
* @return Base64 string if hashed successfully, else NULL 
*/ 
public static String getHashMD5(String str){ 
    String hash = null; 

    try{ 
     MessageDigest digest = null; 

     try { digest = MessageDigest.getInstance("MD5"); } 
     catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
      return hash; 
     } 

     digest.reset(); 
     hash = Base64.encodeToString(digest.digest(str.getBytes()), 
        Base64.DEFAULT).trim(); 
     digest = null; 
    } 
    catch (Exception e) { 
     Log.e("MD5", "Error in getHashMD5() due to -> " + e.toString()); 
    } 

    return hash; 
} 
+0

Нет, никто из них не работает. Я пробовал все, но все же застрял в той же ошибке –

+0

, если у вас есть доступ к серверу, почему вы просто не отключили проверку пароля и не смогли ли ваш веб-вызов не работать? – waqaslam

+0

Я использую сетевые веб-службы sharepoint, поэтому необходим пароль. –

Смежные вопросы