package com.supplychainserver.webservices;

import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;

/**
 * @author Xavier
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class TestCall {

	private static String qnameService = "CommuneInfoService";

	private static String qnamePort = "CommuneInfoServiceSoap";

	private static String BODY_NAMESPACE_VALUE = "http://www.supplychainserver.com/webservices/CommuneInfoservice.asmx";

	private static String ENCODING_STYLE_PROPERTY = "javax.xml.rpc.encodingstyle.namespace.uri";

	private static String NS_XSD = "http://www.w3.org/2001/XMLSchema";

	private static String URI_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/";

public static void main(String[] args) {
	            
	                System.out.println("Endpoint address = " + args[0]);

	                try {
	                    ServiceFactory factory = 
	                        ServiceFactory.newInstance();
	                    Service service = 
	                        factory.createService(
	                        new QName(qnameService));
	            
	                    QName port = new QName(qnamePort);
	            
	                    Call call = service.createCall(port);
	                    call.setTargetEndpointAddress(args[0]);
	            
	                    call.setProperty("javax.xml.rpc.soap.http.soapaction.use" , new Boolean(true));
	                    call.setProperty("javax.xml.rpc.soap.http.soapaction.uri", "http://supplychainserver.com/webservices/RechercherCommune");
	                    call.setProperty(ENCODING_STYLE_PROPERTY,
	                        URI_ENCODING);
	                    call.setProperty("javax.xml.rpc.soap.operation.style", "document");
	                    QName QNAME_TYPE_STRING = 
	                                new QName(NS_XSD, "string");
	                    //call.setReturnType(QNAME_TYPE_STRING);

	                    call.setOperationName(
	                        new QName(BODY_NAMESPACE_VALUE,"RechercherCommune"));
	                    call.addParameter("commune", QNAME_TYPE_STRING, 
	                        ParameterMode.IN);
	                    call.addParameter("departement", QNAME_TYPE_STRING, 
		                        ParameterMode.IN);
	                    String[] params = {"argenteuil", "val d'oise"};

	                    Object result = call.invoke(params);
	                    System.out.println(result);

	                } catch (Exception ex) {
	                    ex.printStackTrace();
	                }
	            }}
