2015-02-11 78 views
0

Windows 7,Java 7 OTRS appliannce。 enter image description hereOTRS:使用wsdl生成Java SEI时出错

我想使用的wsimport从https://raw.githubusercontent.com/OTRS/otrs/master/development/webservices/GenericTicketConnectorSOAP.wsdl

与WSDL文件生成Java SEI我从命令提示符(以管理员身份运行)尝试,它给我的错误(见附件),并没有产生任何东西。

我也试过使用Netbeans 8.我选择从wsdl文件创建Web服务,它抱怨找不到服务和端口。然后我验证了wsdl文件,它无法找到此元素的声明,xmlns:tns =“http://www.otrs.org/TicketConnector/”>

我该如何生成SEI以与OTRS交谈Java的?

谢谢。

+0

我发现了其他的解决方案生成从OTRS WSDL [这里] java类[1] [1]:http://stackoverflow.com/questions/28319442/otrs -genericticketconnectorsoap-wsdl -cant-create-port-and-service/29205592#29205592 – luprogrammer 2015-03-23 08:17:58

+0

谢谢。我会看看。 – wolf97084 2015-03-23 12:16:19

回答

1

我在这里发布我的解决方案,任何有兴趣从Java创建OTRS票证的人。我希望有更多关于从Java访问OTRS的文档。

  1. 从wsdl生成Java存根类是不可能的。我无法在任何地方找到任何解决方案,也不会从任何人那里收到任何回复,也不会从OTRS论坛 - forums.otterhub.org获得任何回复。 (Google OTRS小组不会发布我的问题。)

  2. 要访问OTRS Web服务,您必须使用SOAP。我首先在otrs服务器上运行SOAPRequest.pl,以便从中找出一切,然后再回来。在这之间,我还遭受了命名空间URI与本地名称问题的联系。

我的工作代码在这里,

try { 
    SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance(); 
    SOAPConnection conn = scf.createConnection(); 
    MessageFactory mf = MessageFactory.newInstance(); 
    SOAPMessage msg = mf.createMessage(); 
    SOAPPart sp = msg.getSOAPPart(); 

    SOAPEnvelope env = sp.getEnvelope(); 
    env.addNamespaceDeclaration("tns", "http://www.otrs.org/TicketConnector/"); 
    SOAPBody body = env.getBody(); 
    SOAPBodyElement dispatch = body.addBodyElement(new QName("http://www.otrs.org/TicketConnector/", "TicketCreate", "tns")); 
    dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "UserLogin", "tns")).addTextNode("some user login"); 
    dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Password", "tns")).addTextNode("some user password"); 

    SOAPElement tkt = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Ticket", "tns")); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Title", "tns")).addTextNode("some title"); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Queue", "tns")).addTextNode("one of your queue names"); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Type", "tns")).addTextNode("one of your types"); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "CustomerUser", "tns")).addTextNode("some email address not customer id/name/username. Thought this could be my sys config"); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "State", "tns")).addTextNode("one of your states"); 
    tkt.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Priority", "tns")).addTextNode("one of your priorities"); 

    SOAPElement article = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Article", "tns")); 
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Subject", "tns")).addTextNode("some subject"); 
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Body", "tns")).addTextNode("some body"); 
    article.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "ContentType", "tns")).addTextNode("text/plain; charset=utf8"); 

    SOAPElement dynamicField = dispatch.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "DynamicField", "tns")); 
    dynamicField.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Name", "tns")).addTextNode("one of your dynamic field"); 
    dynamicField.addChildElement(new QName("http://www.otrs.org/TicketConnector/", "Value", "tns")).addTextNode("your dynamic field value"); 

    dispatch.addChildElement(tkt); 
    dispatch.addChildElement(article); 
    dispatch.addChildElement(dynamicField); 

    /* Print the request message */ 
    System.out.print("Request SOAP Message:"); 
    msg.writeTo(System.out); 
    System.out.println(); 
    URL url = new URL("http://your otrs ip address/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorSOAP"); 
    SOAPMessage resp = conn.call(msg, url); 
    resp.writeTo(System.out); 
    System.out.println(); 
    } catch (SOAPException | UnsupportedOperationException | IOException e) { 
     e.printStackTrace(); 
    } 

联系我简称为: