|
[ https://issues.apache.org/jira/browse/OFBIZ-3385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16731871#comment-16731871 ] Greg Finlayson commented on OFBIZ-3385: --------------------------------------- The answer probably is a nice little tool that does create compliant wsdl files that can be used by any client environment.as the SOAP seems to be there at the server side as demonstrated by success in some client environments.Or a repository of real wsdl files. > Axis2 integration returns "Unsupported Content-Type: text/html;charset=utf-8 Supported ones are: [text/xml]" with .Net > ---------------------------------------------------------------------------------------------------------------------- > > Key: OFBIZ-3385 > URL: https://issues.apache.org/jira/browse/OFBIZ-3385 > Project: OFBiz > Issue Type: Bug > Components: framework > Affects Versions: Trunk > Reporter: chris snow > Priority: Major > Attachments: patch.txt, patch2.txt > > > I have setup the findPartiesById service to export="true" and tried to call the web service using Netbeans 6.5. > I received the following error message: > {code} > com.sun.xml.internal.ws.server.UnsupportedMediaException: Unsupported Content-Type: text/html;charset=utf-8 Supported ones are: [text/xml] > at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:284) > at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:118) > at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:278) > at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:180) > at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83) > at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105) > at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587) > at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546) > at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531) > at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428) > at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211) > at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:124) > at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98) > at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) > at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107) > at $Proxy28.findPartiesById(Unknown Source) > at javaapplication7.Main.main(Main.java:74) > {code} > Watching the tcp steam with wireshark, I can see that the prefix ns2 is added to the map-Entry items: > {code} > <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> > <S:Body> > <ns2:findPartiesById xmlns:ns2="http://ofbiz.apache.org/service/"> > <map-Map> > <ns2:map-Entry> > <ns2:map-Key> > <ns2:std-String value="idToFind"/> > </ns2:map-Key> > <ns2:map-Value> > <ns2:std-String value="admin"/> > </ns2:map-Value> > </ns2:map-Entry> > <ns2:map-Entry> > <ns2:map-Key> > <ns2:std-String value="login.username"/> > </ns2:map-Key> > <ns2:map-Value> > <ns2:std-String value="admin"/> > </ns2:map-Value> > </ns2:map-Entry> > <ns2:map-Entry> > <ns2:map-Key> > <ns2:std-String value="login.password"/> > </ns2:map-Key> > <ns2:map-Value> > <ns2:std-String value="ofbiz"/> > </ns2:map-Value> > </ns2:map-Entry> > </map-Map> > </ns2:findPartiesById> > </S:Body> > </S:Envelope> > {code} > If I copy this soap message and paste into SoapUI, the soap call fails. However, if I strip off the ns2 prefix from the map-Entry items (as below), the call succeeds: > {code} > <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> > <S:Body> > <ns2:findPartiesById xmlns:ns2="http://ofbiz.apache.org/service/"> > <map-Map> > <map-Entry> > <map-Key> > <std-String value="idToFind"/> > </map-Key> > <map-Value> > <std-String value="admin"/> > </map-Value> > </map-Entry> > <map-Entry> > <map-Key> > <std-String value="login.username"/> > </map-Key> > <map-Value> > <std-String value="admin"/> > </map-Value> > </map-Entry> > <map-Entry> > <map-Key> > <std-String value="login.password"/> > </map-Key> > <map-Value> > <std-String value="ofbiz"/> > </map-Value> > </map-Entry> > </map-Map> > </ns2:findPartiesById> > </S:Body> > </S:Envelope> > {code} > My java class is: > {code} > package javaapplication7; > import org.apache.ofbiz.service.MapEntry; > import org.apache.ofbiz.service.MapKey; > import org.apache.ofbiz.service.MapMap; > import org.apache.ofbiz.service.MapValue; > import org.apache.ofbiz.service.StdString; > public class Main { > public static void main(String[] args) { > try { > org.apache.ofbiz.service.FindPartiesById service = new org.apache.ofbiz.service.FindPartiesById(); > org.apache.ofbiz.service.FindPartiesByIdPortType port = service.getFindPartiesByIdPort(); > StdString keyString = new StdString(); > keyString.setValue("idToFind"); > MapKey mapKey = new MapKey(); > mapKey.setStdString(keyString); > > StdString valueString = new StdString(); > valueString.setValue("admin"); > > MapValue mapValue = new MapValue(); > mapValue.setStdString(valueString); > MapEntry mapEntry = new MapEntry(); > mapEntry.setMapKey(mapKey); > mapEntry.setMapValue(mapValue); > StdString keyStringLogin = new StdString(); > keyStringLogin.setValue("login.username"); > MapKey mapKeyLogin = new MapKey(); > mapKeyLogin.setStdString(keyStringLogin); > StdString valueStringLogin = new StdString(); > valueStringLogin.setValue("admin"); > MapValue mapValueLogin = new MapValue(); > mapValueLogin.setStdString(valueStringLogin); > MapEntry mapEntryLogin = new MapEntry(); > mapEntryLogin.setMapKey(mapKeyLogin); > mapEntryLogin.setMapValue(mapValueLogin); > StdString keyStringPassword = new StdString(); > keyStringPassword.setValue("login.password"); > MapKey mapKeyPassword = new MapKey(); > mapKeyPassword.setStdString(keyStringPassword); > StdString valueStringPassword = new StdString(); > valueStringPassword.setValue("ofbiz"); > MapValue mapValuePassword = new MapValue(); > mapValuePassword.setStdString(valueStringPassword); > MapEntry mapEntryPassword = new MapEntry(); > mapEntryPassword.setMapKey(mapKeyPassword); > mapEntryPassword.setMapValue(mapValuePassword); > MapMap myMap = new MapMap(); > myMap.getMapEntry().add(mapEntry); > myMap.getMapEntry().add(mapEntryLogin); > myMap.getMapEntry().add(mapEntryPassword); > javax.xml.ws.Holder<org.apache.ofbiz.service.MapMap> mapMap = > new javax.xml.ws.Holder<org.apache.ofbiz.service.MapMap>(myMap); > port.findPartiesById(mapMap); > } catch (Exception ex) { > ex.printStackTrace(); > } > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) |
| Free forum by Nabble | Edit this page |
