Closed
Bug 373300
Opened 17 years ago
Closed 17 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•17 years ago
|
Version: unspecified → 3.0
Comment 1•17 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: 17 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
•