尝试执行Spotfire API服务时出现HTTP代码403错误

时间:2018-04-16 13:39:44

标签: java api spotfire

我只是试图通过java程序调用Tibco Spotfire UpdateAnalysisService Web服务,并在执行时收到以下错误: -

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 403: null
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:310)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:259)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:217)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:130)
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:1121)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:1035)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:1004)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:862)
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:448)
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:178)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:77)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:147)
    at com.sun.proxy.$Proxy31.loadAnalysis(Unknown Source)
    at com.nielsen.spotfire.TestServices.main(TestServices.java:49)

编码参考来自: - https://community.tibco.com/wiki/calling-tibco-spotfire-updateanalysisservice-web-service

实际代码: -

public class TestServices {

    public static void main(String[] args) {

try {

            Authenticator myAuth = new Authenticator() 
            {
                @Override
                protected PasswordAuthentication getPasswordAuthentication()
                {
                    return new PasswordAuthentication("<user>", "<password>".toCharArray());
                }
            };

            Authenticator.setDefault(myAuth);

            UpdateAnalysisServiceImplService test = new UpdateAnalysisServiceImplService(new URL("http://server:<port>/spotfire/ws/pub/UpdateAnalysisService?wsdl"));


            UpdateAnalysis ua = new UpdateAnalysis();
            ua.setPath("/TAM Local Ops Dashboard/DEV/API POC/ANALYSIS_RPD_DATA2");
            test.getUpdateAnalysisServiceImplPort().loadAnalysis(ua);

        } catch (MalformedURLException | UpdateAnalysisServiceException e) {
            e.printStackTrace();
        }       

    }

}

任何人都可以帮忙,让我知道为什么我会收到错误。

谢谢, Asish

1 个答案:

答案 0 :(得分:0)

可能有多种原因。您使用的是哪个版本的Spotfire服务器?

可能的原因:

  1. 未启用API(在服务器配置中)。
  2. 您要为其指定凭据的用户帐户不是 API用户组的成员。
  3. 已为公共API启用CSRF保护机制(您的客户端似乎无法处理此问题)。

如果您有权访问服务器日志,则应该为您提供更多详细信息。