Criação de um cliente JAVA para consumir um Web Service feito em C# .NET

Criei um Web Service Client Java para consumir um Web Service feito em .NET, mas não consigo me autenticar no servidor.

O código cliente contém o seguinte:

public static void main(String[] args) throws Exception {

            URL url = new URL("http://192.168.10.10");

	Service1Locator serviceLocator = new Service1Locator();
	
	Service1SoapStub stub = new  Service1SoapStub(url,serviceLocator);
	
	stub.setUsername("windows2003\\administrator");
	stub.setPassword("teste");
            
	String nome = stub.getNomeCliente(2L);
	
	System.out.println(nome);
     }

OBS.: Tentei colocar o domínio “windows 2003” porque só o usuário “administrator” não estava funcionando !

O seguinte erro ocorre ao executar o código acima:

17:08:19,060 WARN JavaUtils:1308 - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
Exception in thread “main” AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (401)Unauthorized
faultActor:
faultNode:
faultDetail:
{}:return code: 401
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
<HTML><HEAD><TITLE>You are not authorized to view this page</TITLE>
<META HTTP-EQUIV=“Content-Type” Content=“text/html; charset=Windows-1252”>
<STYLE type=“text/css”>
BODY { font: 8pt/12pt verdana }
H1 { font: 13pt/15pt verdana }
H2 { font: 8pt/12pt verdana }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD>

<h1>You are not authorized to view this page</h1>
You do not have permission to view this directory or page using the credentials that you supplied.
<hr>
<p>Please try the following:</p>
<ul>
<li>Contact the Web site administrator if you believe you should be able to view this directory or page.</li>
<li>Click the <a href="javascript:location.reload()">Refresh</a> button to try again with different credentials.</li>
</ul>
<h2>HTTP Error 401.1 - Unauthorized: Access is denied due to invalid credentials.<br>Internet Information Services (IIS)</h2>
<hr>
<p>Technical Information (for support personnel)</p>
<ul>
<li>Go to <a href="http://go.microsoft.com/fwlink/?linkid=8180">Microsoft Product Support Services</a> and perform a title search for the words <b>HTTP</b> and <b>401</b>.</li>
<li>Open <b>IIS Help</b>, which is accessible in IIS Manager (inetmgr),
and search for topics titled <b>Authentication</b>, <b>Access Control</b>, and <b>About Custom Error Messages</b>.</li>
</ul>

</TD></TR></TABLE></BODY></HTML>

{http://xml.apache.org/axis/}HttpErrorCode:401

(401)Unauthorized
at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at org.tempuri.Service1SoapStub.getNomeCliente(Service1SoapStub.java:112)
at br.com.clientwebservice.ClientPIService.main(ClientPIService.java:36)

PS: Criei um Web Service Client em C# e funcionou perfeitamente me autenticando no WebService.

Alguém já precisou criar um cliente em Java de um WebService feito em .NET com autenticação ?

Cara, antes de não autenticar ele dá erro por não encontrar as classes

javax.activation.DataHandler e javax.mail.internet.MimeMultipart

Você tem o JAF e o Java Mail no lib da sua aplicação?

Não sei se isso tem a ver com o erro de autenticação, mas já é um ponto de partida

Consegui resolver o problema…o seguinte código funciona normalmente:

public static void main(String[] args) throws Exception {

	Service1SoapProxy proxy = new Service1SoapProxy();
	
	Service1Soap stub =  proxy.getService1Soap();
	
	((Stub)stub)._setProperty(Stub.USERNAME_PROPERTY, "administrator");
	((Stub)stub)._setProperty(Stub.PASSWORD_PROPERTY, "teste");
		
	String nome = stub.getNomeCliente(2L);
	
	System.out.println(nome);	
}

PS: Não precisa do domínio, pois ao criar o client a partir do WSDL vc já informa o domínio.

[color=darkblue]A solução foi marcar a opção Basic athentication (password is sent in clear text) no servidor IIS.[/color]