Closed
Bug 373300
Opened 19 years ago
Closed 19 years ago
Passing parameters to any webservice through XMLRPC from java every time fails
Categories
(Bugzilla :: WebService, defect)
Tracking
()
RESOLVED
INVALID
People
(Reporter: pavel, Unassigned)
Details
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2
Build Identifier: bugzilla3.0rc1
System: Linux ubuntu
Bugzilla 3.0rc1
Perl: This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
If i try to use any webservice through /xmlrpc.cgi and method which requires parameter (methods which doesn't requiers parameters works well) i get response
as
<?xml version="1.0" encoding="UTF-8"?><methodResponse><fault><value><struct><member><name>faultString</name><value><string>Can't use string ("pavel@tradsports.com") as a HASH ref while "strict refs" in use at Bugzilla/WebService/User.pm line 39.
</string></value></member><member><name>faultCode</name><value><string>Server</string></value></member></struct></value></fault></methodResponse>
Tha apache error log shows:
Use of uninitialized value in pattern match (m//) at /usr/local/share/perl/5.8.8/SOAP/Transport/HTTP.pm line 411.
Probably it is connected.
The second problem is that response above from /xmlrpc.cgi is probably not valid response because during parsing it fails on:
java.lang.ClassCastException: java.lang.String
at org.apache.xmlrpc.parser.XmlRpcResponseParser.addResult(XmlRpcResponseParser.java:55)
at org.apache.xmlrpc.parser.RecursiveTypeParserImpl.endValueTag(RecursiveTypeParserImpl.java:71)
at org.apache.xmlrpc.parser.XmlRpcResponseParser.endElement(XmlRpcResponseParser.java:164)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:177)
at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:146)
at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:94)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:39)
at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:157)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:146)
at rpcclient.RPCClient.main(RPCClient.java:109)
Thanks for any help i like bugzilla but we need to add functionality to enter bug from other system. Is there any other possibility tham xmlrpc? I know nothing about perl so may be it some easy thing but i could'b find any solution.
Reproducible: Always
Steps to Reproduce:
1. I used code for XMLRPC java client from http://wiki.mozilla.org/Testopia:Documentation:XMLRPC
2. Run it on webservice and method which needs parameter like User.login
3. See the response
Actual Results:
<?xml version="1.0" encoding="UTF-8"?><methodResponse><fault><value><struct><member><name>faultString</name><value><string>Can't use string ("pavel@tradsports.com") as a HASH ref while "strict refs" in use at Bugzilla/WebService/User.pm line 39.
</string></value></member><member><name>faultCode</name><value><string>Server</string></value></member></struct></value></fault></methodResponse>
Expected Results:
Login parameters
My XMLRPC client:
/*
* Main.java
*
* Created on 08 March 2007, 11:39
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package rpcclient;
/**
*
* @author psavara
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import java.net.URL;
import java.util.ArrayList;
// Needed for SSL
import java.security.cert.X509Certificate;
import java.util.HashMap;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.xml.sax.InputSource;
public class RPCClient
{
//
// Trust All Certificates - Needed for SSL Client
//
private static void TrustAllCerts()
throws java.security.NoSuchAlgorithmException,
java.security.KeyManagementException
{
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]
{
new X509TrustManager()
{
public X509Certificate[] getAcceptedIssuers()
{
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType)
{
// Trust always
}
public void checkServerTrusted(X509Certificate[] certs, String authType)
{
// Trust always
}
}
};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
// Create empty HostnameVerifier
HostnameVerifier hv = new HostnameVerifier()
{
public boolean verify(String arg0, SSLSession arg1)
{
return true;
}
};
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
}
public static void main(String[] args)
{
try
{
TrustAllCerts();
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://workhorse/xmlrpc.cgi"));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
ArrayList<Object> params = new ArrayList<Object>();
//params.add(1);
params.add("test@test.com");
params.add("test");
//params.add(true);
ArrayList<Object> params1 = new ArrayList<Object>();
params1.add(params);
//HashMap result = (HashMap) client.execute("Product.get_accessible_products", new ArrayList());
Object result = (Object) client.execute("User.login", params);
System.out.println(result);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
| Reporter | ||
Updated•19 years ago
|
Version: unspecified → 3.0
Comment 1•19 years ago
|
||
You're adding the parameters incorrectly. Parameters for the Bugzilla XML-RPC interface are not an array. They are a hash.
The documentation you referred to was for Testopia, not for Bugzilla.
If you have a support question about Bugzilla, ask at on the bugzilla-support list, described at:
http://www.bugzilla.org/support/
Status: UNCONFIRMED → RESOLVED
Closed: 19 years ago
OS: Linux → All
Hardware: PC → All
Resolution: --- → INVALID
You need to log in
before you can comment on or make changes to this bug.
Description
•