2

.NET Web サービスと通信する Java クライアントで構築された SOAP に問題があります。テスト用の .NET クライアントもありますが、このクライアントでは問題はありません。

何が問題なのかを見つけるのを手伝ってもらえますか?

ソープジャバ

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:exportReferentiel xmlns:ns2="http://www.svad.actoll.com/Svad2BPass/V1.0">
<exportData>
<produit idRechargement="202" libelle="Ticket 10 x 1h individuel" LibelleIhm="Ticket 10x1h ind" ordreTri="10" descriptionLongue="Ticket 10 x 1h individuel" dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00">
    <tarif libelle="202">
    <validiteTarif dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00" valeur="1070" />
    <validiteTarif dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00" valeur="1070" />
    </tarif>
    </produit>
...

上記の SOAP には Null オブジェクトがあります

.NET ソープ

<?xml version='1.0' encoding='UTF-8'?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <exportReferentiel xmlns="http://www.svad.actoll.com/Svad2BPass/V1.0">
      <exportData>
        <produit idRechargement="998" libelle="Teste" LibelleIhm="Teste" ordreTri="98" descriptionLongue="batatinhas" dateDebut="2010-05-10T00:00:00" dateFin="2012-12-31T00:00:00" xmlns="">
          <tarif libelle="998">
            <validiteTarif dateDebut="2010-05-10T00:00:00" dateFin="2012-12-31T00:00:00" valeur="300" />
            <validiteTarif dateDebut="2012-12-31T23:59:59.999" dateFin="2013-12-31T00:00:00" valeur="600" />
          </tarif>
        </produit>
...

Web サービス .NET

[WebService(Namespace = "http://www.svad.actoll.com/Svad2BPass/V1.0")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service : System.Web.Services.WebService, ISvad2BPass
{
    private static bool Debug = false;
[WebMethod]
    [SoapDocumentMethod("http://www.svad.actoll.com/Svad2BPass/V1.0/exportReferentiel")]
    public ExportPassTransBPassStatusType exportReferentiel(ExportPassTransBPassType exportData)
    {
        Debug = bool.Parse(ConfigurationManager.AppSettings["Debug"]);

        Logger.Instance.Log(LogTypeCode.DEBUG, exportData.ToString());

        exportReferentielRequest req = new exportReferentielRequest(exportData);
        return LoadExportPassTransBPass(req);
    }

Java SOAP の exportData は null になりますが、.NET SOAP ではすべてのデータで問題ありません...

誰でもこれで私を助けることができますか?

4

2 に答える 2

0

これを解決するには、ns2 を exportData タグに追加します。したがって、この SOAP の正しい構成は次のとおりです。

<ns2:exportReferentiel xmlns:ns2="http://www.svad.actoll.com/Svad2BPass/V1.0">
<ns2:exportData>
 <produit idRechargement="202" libelle="Ticket 10 x 1h individuel" LibelleIhm="Ticket 10x1h ind" ordreTri="10" descriptionLongue="Ticket 10 x 1h individuel" dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00">
  <tarif libelle="202">
   <validiteTarif dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00" valeur="1070" />
   <validiteTarif dateDebut="1999-01-01T00:00:00.000+01:00" dateFin="2099-01-01T00:00:00.000+01:00" valeur="1070" />
  </tarif>
 </produit>
...
</ns2:exportData>
...
于 2012-12-18T13:21:13.733 に答える
0

私は昨日同様の問題と戦っていました。最後に、コントラクト インターフェイスのパラメーター名が、クライアントから渡されたものと一致しないことがわかりました。ただし、リクエストを見ると、Java クライアントと .net クライアントの間に名前の違いは見られません。

インターフェイスはどのように見えますか?

于 2012-12-17T14:35:02.637 に答える