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

3 respostas
F

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: {<a href="http://xml.apache.org/axis/">http://xml.apache.org/axis/</a>}HTTP

faultSubcode:

faultString: (401)Unauthorized

faultActor:

faultNode:

faultDetail:

{}:return code:  401

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “<a href="http://www.w3.org/TR/html4/strict.dtd">http://www.w3.org/TR/html4/strict.dtd</a>”>

<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="<a href="http://go.microsoft.com/fwlink/?linkid=8180">http://go.microsoft.com/fwlink/?linkid=8180</a>">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 ?

3 Respostas

S

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

F

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.

F

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

Criado 18 de maio de 2010
Ultima resposta 19 de mai. de 2010
Respostas 3
Participantes 2