I am trying to consume a WS-Security protected webservice but I am facing some problems. It is a CMDBuild webservice. I have read the CMDBuild Webservices Manual, but I had no success consuming it yet.
I used two ways to try to consume the webservices: SoapUI and Java using Apache CXF. I will describe what I have done to try to consume the webservice with both methods.
First of all, I installed the CMDB application successfully and I can access the WSDL normally. If you need to take a look into WSDL, you can see it here. I know that I have to send a username token, but what I don't know is where I have to put the username token and how I do that.
All methods provided in the webservice can be used upon authentication
in the CMDBuild system. The authentication is performed upon the WSS
Username Token profile 1.0 specification with digest password.
Other question is how I can obtain this username token and the digest password. What I have is the application username and password which I use to access the application GUI.
SoapUI
When I try to consume any method of webservice using SoapUI, the response is always the same:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Sender</soap:Value>
<soap:Subcode>
<soap:Value xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">ns1:InvalidSecurity</soap:Value>
</soap:Subcode>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">An error was discovered processing the <wsse:Security> header</soap:Text>
</soap:Reason>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Here, the XML request (generated by SoapUI):
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:soap1="http://soap.services.cmdbuild.org">
<soap:Header/>
<soap:Body>
<soap1:getCardList>
<!--Optional:-->
<soap1:className></soap1:className>
<!--Zero or more repetitions:-->
<soap1:attributeList>
<!--Optional:-->
<soap1:code></soap1:code>
<!--Optional:-->
<soap1:name></soap1:name>
<!--Optional:-->
<soap1:value></soap1:value>
</soap1:attributeList>
<!--Optional:-->
<soap1:queryType>
<!--Optional:-->
<soap1:filter>
<!--Optional:-->
<soap1:name></soap1:name>
<!--Optional:-->
<soap1:operator>?</soap1:operator>
<!--Zero or more repetitions:-->
<soap1:value></soap1:value>
</soap1:filter>
<!--Optional:-->
<soap1:filterOperator>
<!--Optional:-->
<soap1:operator></soap1:operator>
<!--Zero or more repetitions:-->
<soap1:subquery/>
</soap1:filterOperator>
</soap1:queryType>
<!--Zero or more repetitions:-->
<soap1:orderType>
<!--Optional:-->
<soap1:columnName></soap1:columnName>
<!--Optional:-->
<soap1:type></soap1:type>
</soap1:orderType>
<!--Optional:-->
<soap1:limit></soap1:limit>
<!--Optional:-->
<soap1:offset></soap1:offset>
<!--Optional:-->
<soap1:fullTextQuery></soap1:fullTextQuery>
</soap1:getCardList>
</soap:Body>
</soap:Envelope>
Apache CXF
Using Java, I tried with Apache CXF and I generated the classes automatically (wsdl2java). After that, I code a little bit:
public class Main {
public static void main(String[] args) throws MalformedURLException {
Map<String, Object> inProps = new HashMap<String, Object>();
inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
inProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
Proxy315Service srv = new Proxy315Service(new URL("http://example.com.br:8080/cmdbuild/services/soap/Webservices?wsdl"));
Webservices services = srv.getProxy315Port();
EndpointImpl jaxWsEndpoint = (EndpointImpl) EndpointImpl.publish("http://example.com.br:8080/cmdbuild/services/soap/Webservices", services);
Endpoint cxfEndpoint = jaxWsEndpoint.getServer().getEndpoint();
WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
cxfEndpoint.getInInterceptors().add(wssIn);
Map<String, Object> outProps = new HashMap<String, Object>();
outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
outProps.put(WSHandlerConstants.USER, "gchaves");
outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
cxfEndpoint.getOutInterceptors().add(wssOut);
MenuSchema menu = services.getMenuSchema();
System.out.println(menu.getDescription());
}
}
Output:
Exception in thread "main" javax.xml.ws.WebServiceException: Could not find service named {http://proxy.sun.com/}Proxy315Service in wsdl http://example.com.br:8080/cmdbuild/services/soap/Webservices?wsdl
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:161)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:101)
at javax.xml.ws.Service.<init>(Unknown Source)
at com.sun.proxy.Proxy315Service.<init>(Proxy315Service.java:40)
at com.example.main.Main.main(Main.java:26)
Here is example that works for me:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:soap1="http://soap.services.cmdbuild.org">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-2">
<wsse:Username>admin</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<soap1:getCardList>
<!--Optional:-->
<soap1:className>Monitor</soap1:className>
<!--Zero or more repetitions:-->
<soap1:attributeList>
<!--Optional:-->
<!--Optional:-->
</soap1:attributeList>
<!--Optional:-->
<soap1:queryType>
<!--Optional:-->
<soap1:filter>
<!--Optional:-->
<soap1:name>Brand</soap1:name>
<!--Optional:-->
<soap1:operator>EQUALS</soap1:operator>
<!--Zero or more repetitions:-->
<soap1:value>HP</soap1:value>
</soap1:filter>
<!--Optional:-->
</soap1:queryType>
<!--Zero or more repetitions:-->
<soap1:orderType>
<!--Optional:-->
<soap1:columnName>Code</soap1:columnName>
<!--Optional:-->
<soap1:type>ASC</soap1:type>
</soap1:orderType>
<!--Optional:-->
<soap1:limit>0</soap1:limit>
<!--Optional:-->
<soap1:offset>0</soap1:offset>
<!--Optional:-->
<soap1:fullTextQuery>*</soap1:fullTextQuery>
</soap1:getCardList>
</soap:Body>
</soap:Envelope>
Although it is too late, this answer may help others.
See this link that explains how to use soapUI to consume ws-security enabled web services. You should just double click on the project (In soapUI) and configure outgoing wss. And in soap message (xml part) you should add wss header as it is described in the above link.
Related
I am trying to view the data of a BI publisher report from SOAP UI.
I have used SAWSessionService to establish the connection and as a response I have got a sessionID .
I have again used XMLViewService -> executeXMLQuery to view the report .
I have used the sessionID that I got earlier , to create the envelope as follows:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v7="urn://oracle.bi.webservices/v7">
<soapenv:Header/>
<soapenv:Body>
<v7:executeXMLQuery>
<v7:report>
<v7:reportPath>absolute_report_path
</v7:reportPath>
<v7:reportXml></v7:reportXml>
</v7:report>
<v7:outputFormat></v7:outputFormat>
<v7:executionOptions>
<v7:async></v7:async>
<v7:maxRowsPerPage></v7:maxRowsPerPage>
<v7:refresh></v7:refresh>
<v7:presentationInfo></v7:presentationInfo>
<v7:type></v7:type>
</v7:executionOptions>
<v7:reportParams>
<!--Zero or more repetitions:-->
<v7:filterExpressions></v7:filterExpressions>
<!--Zero or more repetitions:-->
<v7:variables>
<v7:name></v7:name>
<v7:value></v7:value>
</v7:variables>
<!--Zero or more repetitions:-->
<v7:nameValues>
<v7:name></v7:name>
<v7:value></v7:value>
</v7:nameValues>
<!--Zero or more repetitions:-->
<v7:templateInfos>
<v7:templateForEach></v7:templateForEach>
<v7:templateIterator></v7:templateIterator>
<!--Zero or more repetitions:-->
<v7:instance>
<v7:instanceName></v7:instanceName>
<!--Zero or more repetitions:-->
<v7:nameValues>
<v7:name></v7:name>
<v7:value></v7:value>
</v7:nameValues>
</v7:instance>
</v7:templateInfos>
<!--Optional:-->
<v7:viewName></v7:viewName>
</v7:reportParams>
<v7:sessionID>session_id_Earlier_Generated</v7:sessionID>
</v7:executeXMLQuery>
</soapenv:Body>
</soapenv:Envelope>
But I am getting the response as Path not found .
I have given public permissions to the report .
Can someone please help ?
I feel I am doing something wrong .
Your absolute path needs to be based on the directory structure below your Shared Folders. For spaces in names, a + symbol has always worked for us. An easy way to find your absolute report path is to find the URL that you'd go to if you just clicked on the report to run it from the interactive menu, and then take the stuff after the xmlpserver:
For example:
http://yourdomainhere:9704/xmlpserver/FolderRepresentingCompanyNameUnderSharedFolders/ManufacturingFolder/Production+Stats.xdo
In this case, your absolute path is: /FolderRepresentingCompanyNameUnderSharedFolders/ManufacturingFolder/Production+Stats.xdo
Reference
Is it necessary to provide the tenant-admin-UserName & tenant-admin-Password to registerUser()..
Can't it be handled at the super tenant level ?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.mgt.identity.carbon.wso2.org" xmlns:xsd="http://dto.mgt.identity.carbon.wso2.org/xsd">
<soapenv:Header/>
<soapenv:Body>
<ser:registerUser>
<ser:userName>testSelfUser</ser:userName>
<ser:password>testSelfUser</ser:password>
<ser:claims>
<xsd:claimUri>http://wso2.org/claims/country</xsd:claimUri>
<xsd:claimValue>usa</xsd:claimValue>
</ser:claims>
<ser:claims>
<xsd:claimUri>http://wso2.org/claims/emailaddress</xsd:claimUri>
<xsd:claimValue>testSelfUser#email.com</xsd:claimValue>
</ser:claims>
<ser:profileName>default</ser:profileName>
<ser:tenantDomain>mytenant.com</ser:tenantDomain>
</ser:registerUser>
</soapenv:Body>
</soapenv:Envelope>
UserInformationRecoveryService
As authorization header do we have to pass in the **admin#mytenant.com:************
I've created and saved a search in NetSuite. Now I want to use the same search in SuiteTalk web services call. There is no option to set SavedSearchId neither in CustomerSearchBasic nor in CustomerSearch. So I used CustomerSearchAdvanced as below
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:messages_2016_1.platform.webservices.netsuite.com" xmlns:urn1="urn:core_2016_1.platform.webservices.netsuite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<urn:searchPreferences>
<urn:pageSize>10</urn:pageSize>
</urn:searchPreferences>
<urn:applicationInfo>
<urn:applicationId>some id</urn:applicationId>
</urn:applicationInfo>
<urn:passport>
<!-- With Credentials -->
</urn:passport>
</soapenv:Header>
<soapenv:Body>
<urn:search>
<urn:searchRecord ns7:savedSearchId = "732" xsi:type="ns7:CustomerSearchAdvanced"
xmlns:ns7="urn:relationships_2016_1.lists.webservices.netsuite.com">
</urn:searchRecord>
</urn:search>
</soapenv:Body>
</soapenv:Envelope>
But I am getting this error from NetSuite server
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2016_1.platform.webservices.netsuite.com">
<platformMsgs:nsId>some id</platformMsgs:nsId>
</platformMsgs:documentInfo>
</soapenv:Header>
<soapenv:Body>
<searchResponse xmlns="urn:messages_2016_1.platform.webservices.netsuite.com">
<platformCore:searchResult xmlns:platformCore="urn:core_2016_1.platform.webservices.netsuite.com">
<platformCore:status isSuccess="false">
<platformCore:statusDetail type="ERROR">
<platformCore:code>UNEXPECTED_ERROR</platformCore:code>
<platformCore:message>An unexpected error occurred. Error ID: iufcwwrkjcqii34kqgag</platformCore:message>
</platformCore:statusDetail>
</platformCore:status>
</platformCore:searchResult>
</searchResponse>
</soapenv:Body>
</soapenv:Envelope>
I am not able to get information about error Id : iufcwwrkjcqii34kqgag
Is it possible to use Saved Search in SuiteTalk Web services? If yes, what call and types should I use?
I am using SOAP UI project created using this wsdl
Below is the successfully working SOAP request and what you need to configure the Netsuite Account, Token, consumer key, nonce, timestamp and signature. Use the saved search id (here -7734) to invoke the saved search
<soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:messages="urn:messages_2020_1.platform.webservices.netsuite.com" xmlns:accountingLists="urn:accounting_2020_1.lists.webservices.netsuite.com" xmlns:employeesLists="urn:employees_2020_1.lists.webservices.netsuite.com" xmlns:employeesTransactionsTypes="urn:types.employees_2020_1.transactions.webservices.netsuite.com" xmlns:demandplanningTransactions="urn:demandplanning_2020_1.transactions.webservices.netsuite.com" xmlns:common="urn:common_2020_1.platform.webservices.netsuite.com" xmlns:commonTypes="urn:types.common_2020_1.platform.webservices.netsuite.com" xmlns:accountingListsTypes="urn:types.accounting_2020_1.lists.webservices.netsuite.com" xmlns:customizationSetup="urn:customization_2020_1.setup.webservices.netsuite.com" xmlns:inventoryTransactionsTypes="urn:types.inventory_2020_1.transactions.webservices.netsuite.com" xmlns:filecabinetDocuments="urn:filecabinet_2020_1.documents.webservices.netsuite.com" xmlns:bankTransactionsTypes="urn:types.bank_2020_1.transactions.webservices.netsuite.com" xmlns:communicationGeneralTypes="urn:types.communication_2020_1.general.webservices.netsuite.com" xmlns:customizationSetupTypes="urn:types.customization_2020_1.setup.webservices.netsuite.com" xmlns:supplychainListsTypes="urn:types.supplychain_2020_1.lists.webservices.netsuite.com" xmlns:core="urn:core_2020_1.platform.webservices.netsuite.com" xmlns:coreTypes="urn:types.core_2020_1.platform.webservices.netsuite.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:supplychainLists="urn:supplychain_2020_1.lists.webservices.netsuite.com" xmlns:demandplanningTransactionsTypes="urn:types.demandplanning_2020_1.transactions.webservices.netsuite.com" xmlns:websiteLists="urn:website_2020_1.lists.webservices.netsuite.com" xmlns:salesTransactions="urn:sales_2020_1.transactions.webservices.netsuite.com" xmlns:salesTransactionsTypes="urn:types.sales_2020_1.transactions.webservices.netsuite.com" xmlns:relationshipsLists="urn:relationships_2020_1.lists.webservices.netsuite.com" xmlns:inventoryTransactions="urn:inventory_2020_1.transactions.webservices.netsuite.com" xmlns:employeesListsTypes="urn:types.employees_2020_1.lists.webservices.netsuite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:customersTransactions="urn:customers_2020_1.transactions.webservices.netsuite.com" xmlns:schedulingActivitiesTypes="urn:types.scheduling_2020_1.activities.webservices.netsuite.com" xmlns:financialTransactions="urn:financial_2020_1.transactions.webservices.netsuite.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:relationshipsListsTypes="urn:types.relationships_2020_1.lists.webservices.netsuite.com" xmlns:employeesTransactions="urn:employees_2020_1.transactions.webservices.netsuite.com" xmlns:faults="urn:faults_2020_1.platform.webservices.netsuite.com" xmlns:marketingListsTypes="urn:types.marketing_2020_1.lists.webservices.netsuite.com" xmlns:communicationGeneral="urn:communication_2020_1.general.webservices.netsuite.com" xmlns:faultsTypes="urn:types.faults_2020_1.platform.webservices.netsuite.com" xmlns:supportListsTypes="urn:types.support_2020_1.lists.webservices.netsuite.com" xmlns:websiteListsTypes="urn:types.website_2020_1.lists.webservices.netsuite.com" xmlns:purchasesTransactions="urn:purchases_2020_1.transactions.webservices.netsuite.com" xmlns:financialTransactionsTypes="urn:types.financial_2020_1.transactions.webservices.netsuite.com" xmlns:schedulingActivities="urn:scheduling_2020_1.activities.webservices.netsuite.com" xmlns:bankTransactions="urn:bank_2020_1.transactions.webservices.netsuite.com" xmlns:marketingLists="urn:marketing_2020_1.lists.webservices.netsuite.com" xmlns:customersTransactionsTypes="urn:types.customers_2020_1.transactions.webservices.netsuite.com" xmlns:purchasesTransactionsTypes="urn:types.purchases_2020_1.transactions.webservices.netsuite.com" xmlns:generalTransactions="urn:general_2020_1.transactions.webservices.netsuite.com" xmlns:filecabinetDocumentsTypes="urn:types.filecabinet_2020_1.documents.webservices.netsuite.com">
<soap:Header>
<urn:tokenPassport xmlns:urn="urn:messages_2020_1.platform.webservices.netsuite.com">
<ns8:account xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com">NetSuite Account</ns8:account>
<ns8:consumerKey xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com">Consumer Key</ns8:consumerKey>
<ns8:token xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com">Token</ns8:token>
<ns8:nonce xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com">nonce</ns8:nonce>
<ns8:timestamp xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com">timestamp</ns8:timestamp>
<ns8:signature xmlns:ns8="urn:core_2020_1.platform.webservices.netsuite.com" algorithm="HMAC_SHA256">t/WP6f33JePu7rdqtnInwPtJSRIB24RNy3GKhDDpn94=</ns8:signature>
</urn:tokenPassport>
<ns1:preferences xmlns:ns1="urn:messages.platform.webservices.netsuite.com">
<ns2:ignoreReadOnlyFields xmlns:ns2="urn:messages_2020_1.platform.webservices.netsuite.com">true</ns2:ignoreReadOnlyFields>
</ns1:preferences>
<ns3:searchPreferences xmlns:ns3="urn:messages.platform.webservices.netsuite.com">
<ns4:bodyFieldsOnly xmlns:ns4="urn:messages_2020_1.platform.webservices.netsuite.com">true</ns4:bodyFieldsOnly>
<ns5:pageSize xmlns:ns5="urn:messages_2020_1.platform.webservices.netsuite.com">999</ns5:pageSize>
</ns3:searchPreferences>
</soap:Header>
<soap:Body>
<ns24:search xmlns:ns5="urn:filecabinet_2020_1.documents.webservices.netsuite.com" xmlns:ns6="urn:relationships_2020_1.lists.webservices.netsuite.com" xmlns:ns3="urn:common_2020_1.platform.webservices.netsuite.com" xmlns:ns4="urn:communication_2020_1.general.webservices.netsuite.com" xmlns:ns9="urn:sales_2020_1.transactions.webservices.netsuite.com" xmlns:ns7="urn:support_2020_1.lists.webservices.netsuite.com" xmlns:ns8="urn:accounting_2020_1.lists.webservices.netsuite.com" xmlns="urn:core_2020_1.platform.webservices.netsuite.com" xmlns:ns19="urn:supplychain_2020_1.lists.webservices.netsuite.com" xmlns:ns18="urn:demandplanning_2020_1.transactions.webservices.netsuite.com" xmlns:ns2="urn:scheduling_2020_1.activities.webservices.netsuite.com" xmlns:ns17="urn:marketing_2020_1.lists.webservices.netsuite.com" xmlns:ns16="urn:employees_2020_1.transactions.webservices.netsuite.com" xmlns:ns15="urn:website_2020_1.lists.webservices.netsuite.com" xmlns:ns14="urn:employees_2020_1.lists.webservices.netsuite.com" xmlns:ns13="urn:customization_2020_1.setup.webservices.netsuite.com" xmlns:ns24="urn:messages_2020_1.platform.webservices.netsuite.com" xmlns:ns12="urn:financial_2020_1.transactions.webservices.netsuite.com" xmlns:ns23="urn:faults_2020_1.platform.webservices.netsuite.com" xmlns:ns11="urn:customers_2020_1.transactions.webservices.netsuite.com" xmlns:ns22="urn:general_2020_1.transactions.webservices.netsuite.com" xmlns:ns10="urn:purchases_2020_1.transactions.webservices.netsuite.com" xmlns:ns21="urn:inventory_2020_1.transactions.webservices.netsuite.com" xmlns:ns20="urn:bank_2020_1.transactions.webservices.netsuite.com">
<ns24:searchRecord xsi:type="ns13:CustomRecordSearchAdvanced" savedSearchId="7734"/>
</ns24:search>
</soap:Body>
</soap:Envelope>
I am trying to retrieve TFS workitems using ClientService.asmx using JavaScript and I am able to access the webservice, however when using the SOAP it gives me following error "TF51612: The query does not contain any groups or expressions.
Parameter name: queryXml"
Below is the code that I am using to access the Workitems:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<RequestHeader xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
<Id></Id>
</RequestHeader>
</soap:Header>
<soap:Body>
<QueryWorkitems xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
<psQuery>
<queryXml>
<Wiql>SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] FROM WorkItems WHERE [System.TeamProject] = #project AND [System.WorkItemType] <> '' AND [System.State] <> '' ORDER BY [System.Id] </Wiql>
</queryXml>
</psQuery>
</QueryWorkitems>
</soap:Body>
</soap:Envelope>
Please let me know what am I doing wrong.
Thanks
Your header SOAP must contais informations about your credential, because your query header's is empty so you are not authenticated
Add this with Soap Extension in your Web service, register in config file
After much pain I figured out how to do a proper request to this service. Here is my full request. Forgive me for the formatiing. I am apparently too dumb to figure out how to do a proper list.
Couple of notes...
*the RequestHeader Id field has to be in the format uuid:GUID
*The psQuery element is not actually in Wiql as other web sources have hinted. (Which is you are receiving the error)
*The FieldType for numeric fields is 288
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
<soapenv:Header>
<ns:RequestHeader>
<!--Optional:-->
<ns:Id>uuid:262c6910-8394-11e3-baa7-0800200c9a67</ns:Id>
</ns:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<ns:QueryWorkitems>
<!--Optional:-->
<ns:psQuery>
<Group GroupOperator="And">
<Expression Column="System.TeamProject" FieldType="16" Operator="equals"><String>ProjectName</String></Expression>
<Expression Column="System.AssignedTo" FieldType="16" Operator="equals"><String>Daniel West</String></Expression>
<Expression Column="System.WorkItemType" FieldType="16" Operator="equals"><String>Anomaly</String></Expression>
<Expression Column="System.State" FieldType="16" Operator="equals"><String>Validate</String></Expression>
</Group>
</ns:psQuery>
<ns:sort>
<!--Zero or more repetitions:-->
<ns:QuerySortOrderEntry>
<!--Optional:-->
<ns:ColumnName>System.AssignedTo</ns:ColumnName>
<ns:Ascending>1</ns:Ascending>
</ns:QuerySortOrderEntry>
</ns:sort>
<ns:useMaster>1</ns:useMaster>
</ns:QueryWorkitems>
</soapenv:Body>
</soapenv:Envelope>
I am trying to create document in SharePoint repository using CMIS wsdl. but getting some error. I am using soapui to call the service.
Here's part of the xml that gets created:
Request : <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:ns1="http://docs.oasis-open.org/ns/cmis/core/200908/">
<soapenv:Header/>
<soapenv:Body>
<ns:createDocument>
<!--Optional:-->
<ns:repositoryId>64bec929-945e-46f1-9c74-d0ab24803283</ns:repositoryId>
<!--Optional:-->
<ns:properties>
<propertyString propertyDefinitionId="cmis:name" localName="FileLeafRef" displayName="Name" queryName="cmis:name">
<value>test.txt</value>
</propertyString>
<propertyId propertyDefinitionId="cmis:objectId" localName="cmis:objectId" displayName="cmis:objectId" queryName="cmis:objectId">
<value>123123</value>
</propertyId>
<propertyId propertyDefinitionId="cmis:baseTypeId" localName="cmis:baseTypeId" displayName="cmis:baseTypeId" queryName="cmis:baseTypeId">
<value>cmis:document</value>
</propertyId>
<propertyId propertyDefinitionId="cmis:objectTypeId" localName="cmis:objectTypeId" displayName="cmis:objectTypeId" queryName="cmis:objectTypeId">
<value>cmis:document</value>
</propertyId>
<propertyBoolean propertyDefinitionId="cmis:isImmutable" localName="cmis:isImmutable" displayName="cmis:isImmutable" queryName="cmis:isImmutable">
<value>true</value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isLatestVersion" localName="cmis:isLatestVersion" displayName="cmis:isLatestVersion" queryName="cmis:isLatestVersion">
<value>true</value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isMajorVersion" localName="cmis:isMajorVersion" displayName="cmis:isMajorVersion" queryName="cmis:isMajorVersion">
<value>true</value>
</propertyBoolean>
<propertyBoolean propertyDefinitionId="cmis:isLatestMajorVersion" localName="cmis:isLatestMajorVersion" displayName="cmis:isLatestMajorVersion" queryName="cmis:isLatestMajorVersion">
<value>true</value>
</propertyBoolean>
<propertyString propertyDefinitionId="cmis:versionLabel" localName="cmis:versionLabel" displayName="cmis:versionLabel" queryName="cmis:versionLabel">
<value>1.0</value>
</propertyString>
<propertyId propertyDefinitionId="cmis:versionSeriesId" localName="cmis:versionSeriesId" displayName="cmis:versionSeriesId" queryName="cmis:versionSeriesId">
<value>1</value>
</propertyId>
<propertyBoolean propertyDefinitionId="cmis:isVersionSeriesCheckedOut" localName="cmis:isVersionSeriesCheckedOut" displayName="cmis:isVersionSeriesCheckedOut" queryName="cmis:isVersionSeriesCheckedOut">
<value>true</value>
</propertyBoolean>
<propertyInteger propertyDefinitionId="cmis:contentStreamLength" localName="File_x0020_Size" displayName="File Size" queryName="cmis:contentStreamLength">
<value>19444</value>
</propertyInteger>
<propertyString propertyDefinitionId="cmis:contentStreamMimeType" localName="cmis:contentStreamMimeType" displayName="cmis:contentStreamMimeType" queryName="cmis:contentStreamMimeType">
<value>text/plain</value>
</propertyString>
<propertyString propertyDefinitionId="cmis:contentStreamFileName" localName="FileLeafRef" displayName="Name" queryName="cmis:contentStreamFileName">
<value>test.txt</value>
</propertyString>
</ns:properties>
<ns:folderId/>
<ns:contentStream>
<!--Optional:-->
<ns:length>19444</ns:length>
<!--Optional:-->
<ns:mimeType>text/plain</ns:mimeType>
<!--Optional:-->
<ns:filename>a1.txt</ns:filename>
<!--Optional:-->
<ns:stream>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</ns:stream>
</ns:contentStream>
<ns:versioningState>major</ns:versioningState>
<!--Zero or more repetitions:-->
<ns:policies/>
<ns:addACEs>
<!--Zero or more repetitions:-->
<ns1:permission>
<!--Optional:-->
<ns1:principal>
<!--Optional:-->
<ns1:principalId/>
</ns1:principal>
<!--Zero or more repetitions:-->
<ns1:permission>cmis:all</ns1:permission>
<ns1:direct>false</ns1:direct>
</ns1:permission>
</ns:addACEs>
<ns:removeACEs/>
<ns:extension/>
</ns:createDocument>
</soapenv:Body>
</soapenv:Envelope>
The response I get back is:
<faultcode>s:constraint</faultcode>
<faultstring>The operation violates a Repository- or Object-level constraint defined in the CMIS domain model.</faultstring>
<detail>
<cmisFault xmlns="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<code>409</code>
<message>The operation violates a Repository- or Object-level constraint defined in the CMIS domain model.</message>
<type>constraint</type>
</cmisFault>
</detail>
</s:Fault>
Please help...
You are trying to set read-only properties such as cmis:object:id, cmis:versionSeriesId and others. Check the CMIS specification which properties are read-write properties.
you need to make sure that your parameter for versioning matches what you have enabled on SharePoint
Hi this is solution and it works!
Check Attachment in the image
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:createDocument xmlns="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:ns2="http://docs.oasis-open.org/ns/cmis/messaging/200908/">
<ns2:repositoryId>A1</ns2:repositoryId>
<ns2:properties>
<propertyId propertyDefinitionId="cmis:name">
<value>DADADAAAAAA.txt</value>
</propertyId>
<propertyId propertyDefinitionId="cmis:objectTypeId">
<value>DocumentTopLevel</value>
</propertyId>
</ns2:properties>
<ns2:folderId>100</ns2:folderId>
<ns2:contentStream>
<ns2:length>32768</ns2:length>
<ns2:mimeType>text/plain</ns2:mimeType>
<ns2:filename>data442.txt</ns2:filename>
<ns2:stream>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:1ee9605a-a27d-41e9-9c77-d2c1ad244768#example.jaxws.sun.com"/>
</ns2:stream>
</ns2:contentStream>
<ns2:versioningState>none</ns2:versioningState>
</ns2:createDocument>
</S:Body>
</S:Envelope>