lordxearo
Goto Top

Powershell Soap WSDL Mantis Bug Tracker

Hallo Zusammen,

ich versuche ein Ticket im Mantis über die SOAP-Schnittstelle zu erstellen. Ich möchte das mit Powershell lösen. Leider komme ich mit meinen Versuchen nicht weiter.

Hier ein Auszug aus Mantis:

Web Service: MantisConnect
Target Namespace: http://futureware.biz/mantisconnect
Port MantisConnect
Port Port type
Source code
Location:http://mantis/mantis/api/soap/mantisconnect.php
Protocol:SOAP
Default style:rpc
Transport protocol:SOAP over HTTP

Diese Methode müsste ich benutzen:
d759b0c8dcbed048414fe9ae32d0e59f


Das habe ich bisher probiert:
$mantis = New-WebServiceProxy -Uri http://mantis/mantis/api/soap/mantisconnect.php?wsdl 

$summary  = New-Object "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsdl.IssueData"  
#$project = New-Object "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsdl.ObjectRef"  
#$project=@{project="IT"}  


$summary=@{summary="test"}  


#$mantis | get-member -type method

$response = $mantis.mc_issue_add("username","password",$summary)  
$response

Ausgabe:
Ausnahme beim Aufrufen von "mc_issue_add" mit 3 Argument(en):  "Error Type: SYSTEM NOTICE,  
Error Description: Undefined index: project"  
In C:\Temp\mantis.ps1:13 Zeichen:1
+ $response = $mantis.mc_issue_add("username","pssword",$summary)   
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : SoapHeaderException

Liesst sich so, als müsste project noch angegeben werden. Hier komm ich nun nicht mehr weiter. Project ist vom Typ ObjectRef. Mit dem anlegen des Datentyps bin ich mir schon unsicher, aber dass dann noch in die Methode "mc_issue_add" einzubinden, übersteigt leider meine Powershell kenntnisse.

Könnte mir da jemand Hilfestellung geben?

Danke und Gruß
Xearo

Content-ID: 272228

Url: https://administrator.de/contentid/272228

Ausgedruckt am: 05.11.2024 um 00:11 Uhr

114757
114757 18.05.2015 aktualisiert um 13:06:36 Uhr
Goto Top
Moin,
kenne zwar den Webservice jetzt nicht aber versuchs mal so:
$mantis = New-WebServiceProxy -Uri http://mantis/mantis/api/soap/mantisconnect.php?wsdl  
$issue  = New-Object "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsdl.IssueData"  
$issue.summary = "BlaBlaBla"  
$response = $mantis.mc_issue_add("username","password",$issue)   
Gruß jodel32
LordXearo
LordXearo 18.05.2015 aktualisiert um 13:12:53 Uhr
Goto Top
Hi Jodel,

danke für deine Unterstützung. So leicht scheint es nicht zu klappen.

Das Argument "issue" mit dem Wert  "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy  
1pi_soap_mantisconnect_php_wsdl.IssueData" für "mc_issue_add" kann nicht in den Typ "Microsoft.PowerShell.Commands.NewW  
ebserviceProxy.AutogeneratedTypes.WebServiceProxy3pi_soap_mantisconnect_php_wsdl.IssueData" konvertiert werden: "Der  
Wert "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsd  
l.IssueData" vom Typ "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_manti  
sconnect_php_wsdl.IssueData" kann nicht in den Typ "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes  
.WebServiceProxy3pi_soap_mantisconnect_php_wsdl.IssueData" konvertiert werden."  
In C:\Temp\mantis.ps1:19 Zeichen:1
+ $response = $mantis.mc_issue_add("username","password",$issue)  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

Gruß
Xearo

Edit:
Habe das Object angeasst:
$issue  = New-Object "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3pi_soap_mantisconnect_php_wsdl.IssueData"  

Und erhalte jetzt wieder:
Ausnahme beim Aufrufen von "mc_issue_add" mit 3 Argument(en):  "Error Type: SYSTEM NOTICE,  
Error Description: Undefined index: project"  
In C:\Temp\mantis.ps1:19 Zeichen:1
+ $response = $mantis.mc_issue_add("username","password",$issue)  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : SoapHeaderException
114757
114757 18.05.2015 aktualisiert um 13:20:35 Uhr
Goto Top
Ohne Zugriff auf den Webservice von hier aus schwer zu debuggen. Die Eigenschaft project ist eigentlich als optional gekennzeichnet, gibt es in der Struktur noch Eigenschaften die mandatory(Pflicht) sind, leider ist das Bild abgeschnitten ?
Kannst du den Dienst vielleicht online stellen, URL dann via PM ?
LordXearo
LordXearo 18.05.2015 um 13:24:55 Uhr
Goto Top
Hier scheint es eine online demo zugeben.

http://demo.teclib.net/mantis/api/soap/mantisconnect.php?wsdl
114757
Lösung 114757 18.05.2015 aktualisiert um 13:47:23 Uhr
Goto Top
Zitat von @LordXearo:

Hier scheint es eine online demo zugeben.

http://demo.teclib.net/mantis/api/soap/mantisconnect.php?wsdl
username password ?

probiers mal so:
$mantis = New-WebServiceProxy -Uri 'http://mantis/mantis/api/soap/mantisconnect.php?wsdl'  
$issue  = New-Object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsdl.IssueData
$project = new-Object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1pi_soap_mantisconnect_php_wsdl.ObjectRef
$project.id = 1
$project.name = "Testname"  
$issue.project = $project
$issue.summary = "BlaBla"  
$mantis.mc_issue_add("username","password",$issue)  
Ein Projekt mit der ID muss vermutlich existieren.
LordXearo
LordXearo 18.05.2015 um 13:47:19 Uhr
Goto Top
Klasse Jodel, es funktioniert =)
Description und category sind anscheinend auch noch mandatory.

$mantis = New-WebServiceProxy -Uri 'http://mantis/mantis/api/soap/mantisconnect.php?wsdl'  
$issue  = New-Object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3pi_soap_mantisconnect_php_wsdl.IssueData
$project = new-Object Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy3pi_soap_mantisconnect_php_wsdl.ObjectRef
$project.id = 1
$project.name = "Testname"  
$issue.project = $project
$issue.summary = "BlaBla"  
$issue.description = "BlaBla"  
$issue.category = "Hardware"  
$response = $mantis.mc_issue_add("username","password",$issue)  
$response 

Wäre es Java gewesen, wäre ich wahrscheinlich noch selber drauf gekommen, die Attribute direkt am erzeugten Object zu belegen *autsch*.

Besten Dank
Gruß
Xearo