简体   繁体   English

Java客户端对Web服务(c#)的用户名和密码请求

[英]java client request to web-service(c#) with username and password

I want use apache cxf make a client(java)to request webservice. 我想使用apache cxf使客户端(java)请求Web服务。

webservice: 网络服务:

https://extenavigator.ukho.gov.uk/serviceB2B/submitUKHOOrdering.svc https://extenavigator.ukho.gov.uk/ServiceB2B/SubmitUKHOOrdering.svc?singleWsdl https://extenavigator.ukho.gov.uk/serviceB2B/submitUKHOOrdering.svc https://extenavigator.ukho.gov.uk/ServiceB2B/SubmitUKHOOrdering.svc?singleWsdl

I use wsdl2java generate java code , 我用wsdl2java生成java代码,

it is not working: 它不起作用:

JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
    proxyFactory.setServiceClass(IOrderingService.class);
    proxyFactory.setAddress("https://extenavigator.ukho.gov.uk/serviceB2B/submitUKHOOrdering.svc");
    proxyFactory.setUsername(USERNAME);
    proxyFactory.setPassword(PASSWORD);
    proxyFactory.setBindingId("http://www.w3.org/2003/05/soap/bindings/HTTP/");
    IOrderingService client = (IOrderingService) proxyFactory.create();
    System.out.println("submit order...");
    SubmitOrderResponse submitOrderResponse = client.submitOrder(WebService.makeSubmitOrderRequest());
    System.out.println("submit order response...");

    Integer orderId = submitOrderResponse.getOrderId();
    System.out.println("orderId:" + orderId);
    submitOrderResponse.getOrderStatus().getValue().getOrderItemStatus().forEach(item -> {
        System.out.println("item.getProduct:" + item.getProduct());
        System.out.println("item.getStatus:" + item.getStatus());
    });

    System.out.println("AccountId:" + submitOrderResponse.getAccountId());

throw

java.net.SocketTimeoutException: Read timed out java.net.SocketTimeoutException:读取超时

I try to make ac# client to request the service, 我尝试让ac#客户端请求服务,

it is working! 这是工作!

uk.OrderingServiceClient client = new uk.OrderingServiceClient();
        if (client.ClientCredentials != null)
        {
            client.ClientCredentials.UserName.UserName = "XXXXXX";
            client.ClientCredentials.UserName.Password = "XXXXXX";
        }
        client.Endpoint.Address = new EndpointAddress("https://extenavigator.ukho.gov.uk/serviceB2B/submitUKHOOrdering.svc");

        var response = client.SubmitOrder(new SubmitOrderRequest()
        {
            Order = new Order()
            {
                DistId = 2960,
                LicenceId = 45039,
                DeliveryMethod = DeliveryMethod.Both,
                OrderItems = new OrderItem[]{
                        new OrderItem()
                        {
                            ProductId = "AR201130",
                            ProductPeriod = 9,
                            ProductType = ProductType.AVCSCharts
                        }
                }
            },
            RequestId = Guid.NewGuid().ToString()
        });

Any solution (java client)? 任何解决方案(java客户端)?

this code is working : 此代码有效:

OrderingService service = new OrderingService();
    IOrderingService port = service.getWSHttpBindingIOrderingService();

    BindingProvider bp = (BindingProvider) port;
    bp.getRequestContext().put("ws-security.username", USERNAME);
    bp.getRequestContext().put("ws-security.password", PASSWORD);


    System.out.println("submit order...");
    SubmitOrderResponse submitOrderResponse = port.submitOrder(WebService.makeSubmitOrderRequest());
    System.out.println("submit order response...");

    Integer orderId = submitOrderResponse.getOrderId();
    System.out.println("orderId:" + orderId);
    submitOrderResponse.getOrderStatus().getValue().getOrderItemStatus().forEach(item -> {
        System.out.println("item.getProduct:" + item.getProduct());
        System.out.println("item.getStatus:" + item.getStatus());
    });

    System.out.println("AccountId:" + submitOrderResponse.getAccountId());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM