[PHP] SOAP: problema ritorno array (alby,tristan, ecc.. inside)

Collapse
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts
  • gbpackers
    #1 Fan GreenBay Packers
    • Jun 2006
    • 5542
    • 302
    • 227
    • Send PM

    [PHP] SOAP: problema ritorno array (alby,tristan, ecc.. inside)

    Ho un piccolo grande problema: stò usando la libreria di soap di php per un client che si connette ad un webservice wsdl java con il seguente codice:

    Codice:
    $webservices_uri = "http://10.0.0.15:5004/TestWS";
    	
    require_once('SOAP/Client.php');
    
    $connection_params = array();
    
    $username = "usr";
    
    $password = "pwd";
    
    $client = new SOAP_client($webservices_uri, false, false, $connection_params);
    
    $params = array("user" => $username, "pwd" => $password, "idCitta" => 1);
    $response = $client->call("selectCity", $params);
    
    var_dump($response);
    la chiamata alla funzione "selectCity" dovrebbe ritornare una String[7] ma lui me ne ritorna solo 5, anche altri metodi che hanno a che fare con List<String[]> o cmq con array di stringhe i primi due valori non vengono mai ritornati.
    Si può sapere che cos'ha che non và?
    Aggiungo che sia con client C# sia con client Java non ha di questi problemi quindi il webservice funziona egregiamente.
    Grazie
    sigpic
  • gbpackers
    #1 Fan GreenBay Packers
    • Jun 2006
    • 5542
    • 302
    • 227
    • Send PM

    #2
    Aggiungo una cosa che ho notato ora: se ho meno di 4 righe di ritorno (String[3] oppure una List<> di 3) ritorna tutti e 3 mentre se ne ho più di 3 le prime due non vengono ritornate :|
    sigpic

    Commenta

    • gbpackers
      #1 Fan GreenBay Packers
      • Jun 2006
      • 5542
      • 302
      • 227
      • Send PM

      #3
      suicidio.. anche agli array di interi capita la stessa cosa
      sigpic

      Commenta

      • Tristan
        Papəete Beach
        • Oct 2007
        • 16642
        • 547
        • 588
        • AS Roma
        • Send PM

        #4
        quindi il problema è nella funzione, posta un po' il codice

        di php non mi ricordo un ***** ma occhio e croce la sintassi è quella...quindi posso provare a darti una mano

        Commenta

        • Tristan
          Papəete Beach
          • Oct 2007
          • 16642
          • 547
          • 588
          • AS Roma
          • Send PM

          #5
          quindi il problema è nella funzione, posta un po' il codice

          di php non mi ricordo un ***** ma occhio e croce la sintassi è quella...quindi posso provare a darti una mano

          Commenta

          • gbpackers
            #1 Fan GreenBay Packers
            • Jun 2006
            • 5542
            • 302
            • 227
            • Send PM

            #6
            purtroppo no, la funzione del ws è giusta infatti con client C# e java non ha problemi, il problema è che in PHP qualcosa non quadra, forse l'xml che descrive il ws ha qualche argomento che non và a genio a php ma non ho capito quale
            sigpic

            Commenta

            • gbpackers
              #1 Fan GreenBay Packers
              • Jun 2006
              • 5542
              • 302
              • 227
              • Send PM

              #7
              esempio:

              Codice:
              public List<String[]> getMagazzini(String usr, String pwd) {
              		if(this.login(usr, pwd)){
              			List<String[]> listCities = new ArrayList<String[]>();
              			String[] singleCity = new String[2];
              			try{
              				StringBuffer query = new StringBuffer(
              						"SELECT " +
              						"idmagazzino, descrizione " +
              						"FROM " +
              						"magazzini " +
              						"where attivo = 1 order by idmagazzino");
              				
              				log(this, "getMagazzini: " + query.toString(), Utils.INFO);
              				
              				SqlRowSet rowSet = this.jdbcTemplate.queryForRowSet(query.toString()); 
              				while(rowSet.next()){
              					singleCity = new String[2];
              					singleCity[0] = rowSet.getString(1);
              					singleCity[1] = rowSet.getString(2);
              					listCities.add(singleCity);
              				}
              			}catch(Exception e){
              				log(this, "getMagazzini: " + e.getMessage(), Utils.ERROR);
              			}
              			return listCities;
              		}else
              			return null;
              	}
              la lista di array di stringhe listCities ha 23 elementi (provato a stampare dopo il ciclo del rowset), peccato che quando passa a php i prime due non ci sono
              sigpic

              Commenta

              • Tristan
                Papəete Beach
                • Oct 2007
                • 16642
                • 547
                • 588
                • AS Roma
                • Send PM

                #8
                quindi quella funzione è corretta?

                uhm...forse al suo interno si prende qualche parametro assente in php

                Commenta

                • gbpackers
                  #1 Fan GreenBay Packers
                  • Jun 2006
                  • 5542
                  • 302
                  • 227
                  • Send PM

                  #9
                  corretta al 120%, provata varie volte sia cu c# che java per non fare cazzate.
                  penso sia un baco di php con gli array ma non trovo soluzioni, mi toccherà ritornare una stringa formattata a mò di xml se non ne esco
                  sigpic

                  Commenta

                  • gbpackers
                    #1 Fan GreenBay Packers
                    • Jun 2006
                    • 5542
                    • 302
                    • 227
                    • Send PM

                    #10
                    ho provato a passare da ArraList<> ad Object[] ma niente.. .sempre i primi due mancano all'appello
                    sigpic

                    Commenta

                    • XVII
                      Bodyweb Advanced
                      • Nov 2007
                      • 595
                      • 48
                      • 75
                      • Send PM

                      #11
                      Originariamente Scritto da gbpackers Visualizza Messaggio
                      ho provato a passare da ArraList<> ad Object[] ma niente.. .sempre i primi due mancano all'appello
                      Eh passando ad Object[] forse le cose peggiorano....comunque è molto strano che non ti passi i primi due elementi della lista, hai già provato a vedere se ti fa sto scherzo solo con l'array di stringhe o anche con altro?
                      what?

                      Commenta

                      • gbpackers
                        #1 Fan GreenBay Packers
                        • Jun 2006
                        • 5542
                        • 302
                        • 227
                        • Send PM

                        #12
                        Originariamente Scritto da XVII Visualizza Messaggio
                        Eh passando ad Object[] forse le cose peggiorano....comunque è molto strano che non ti passi i primi due elementi della lista, hai già provato a vedere se ti fa sto scherzo solo con l'array di stringhe o anche con altro?
                        Anche con object le cose sono rimaste uguali, questo problema lo rilevo ogni volta che ritorno array di qualunque tipo sia... Mah
                        sigpic

                        Commenta

                        • XVII
                          Bodyweb Advanced
                          • Nov 2007
                          • 595
                          • 48
                          • 75
                          • Send PM

                          #13
                          Originariamente Scritto da gbpackers Visualizza Messaggio
                          Anche con object le cose sono rimaste uguali, questo problema lo rilevo ogni volta che ritorno array di qualunque tipo sia... Mah
                          Sai cosa potresti fare? una funzione di controllo che controlla la presenza di tutti gli elementi necessari e in caso contrario aggiunge quelli mancanti passati tramite un array di "backup" contenente magari solo i primi due elementi...
                          what?

                          Commenta

                          • gbpackers
                            #1 Fan GreenBay Packers
                            • Jun 2006
                            • 5542
                            • 302
                            • 227
                            • Send PM

                            #14
                            Originariamente Scritto da XVII Visualizza Messaggio
                            Sai cosa potresti fare? una funzione di controllo che controlla la presenza di tutti gli elementi necessari e in caso contrario aggiunge quelli mancanti passati tramite un array di "backup" contenente magari solo i primi due elementi...
                            è un idea, il problema è che a questo punto per ogni funzione del ws ci vorrebbero 3 funzioni e anche le query sul db aumenterebbero e sinceramente non sò se sia performante una cosa del genere.
                            Soluzione è ritornare una stringa formattata tipo xml oppure i singoli campi divisi da ";" e "|" e poi da splittare in php; ovvi oche non siano soluzione eleganti ma sono a corto di idee
                            sigpic

                            Commenta

                            • Tristan
                              Papəete Beach
                              • Oct 2007
                              • 16642
                              • 547
                              • 588
                              • AS Roma
                              • Send PM

                              #15
                              a sto punto andrei di stringa...se sai come è strutturata la stringa il gioco è fatto.

                              non è una soluzione elegante ma...a mali estremi..

                              Commenta

                              Working...
                              X