Başlığa göre, new SoapClient
'un, aslında SOAP sunucusuna göndermeden önce doğru olduğundan emin olmak için __soapCall()
'u çalıştırmaya çalışmadan önce XML'in üretilmesi mümkün mü?PHP SOAP'in göndermeden önce göndermek istediği XML'yi önizleyebilir miyim?
cevap
Türetilmiş sınıf kullanmak ve SoapClient sınıfı __doRequest() method üzerine olabilir.
<?php
//$clientClass = 'SoapClient';
$clientClass = 'DebugSoapClient';
$client = new $clientClass('http://www.webservicex.com/CurrencyConvertor.asmx?wsdl');
$client->sendRequest = false;
$client->printRequest = true;
$client->formatXML = true;
$res = $client->ConversionRate(array('FromCurrency'=>'USD', 'ToCurrency'=>'EUR'));
var_dump($res);
class DebugSoapClient extends SoapClient {
public $sendRequest = true;
public $printRequest = false;
public $formatXML = false;
public function __doRequest($request, $location, $action, $version, $one_way=0) {
if ($this->printRequest) {
if (!$this->formatXML) {
$out = $request;
}
else {
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->loadxml($request);
$doc->formatOutput = true;
$out = $doc->savexml();
}
echo $out;
}
if ($this->sendRequest) {
return parent::__doRequest($request, $location, $action, $version, $one_way);
}
else {
return '';
}
}
}
baskılar
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.webserviceX.NET/">
<SOAP-ENV:Body>
<ns1:ConversionRate>
<ns1:FromCurrency>USD</ns1:FromCurrency>
<ns1:ToCurrency>EUR</ns1:ToCurrency>
</ns1:ConversionRate>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
NULL
Ama bu ne zaman mümkün önlemek için çalıştıkları çalışması için (yani araçlar işini yapsın) gerçek kod biraz değiştirmek gerekir.
Parlak, teşekkürler. – bcmcfc
Prototip/değerlendirme aşamasında olduğunuz sürece muhtemelen sorun değil. Daha sonra "non-invaziv" araçları denemelisiniz. Php/yuva ile denemedim ama kemancı ve wireshark muhtemelen iş yapabilir. Ya ağ paketlerini getirmelerine izin verin veya komut dosyasını proxy olarak kullanmak için yapılandırın. http://www.fiddler2.com/fiddler2/ – VolkerK
Tam olarak bu - İlk kurulum aşamasında XML'in doğru olduğundan emin olmak istedim. – bcmcfc
Daha önce değil ama sonra. Bkz:
SoapClient::__getLastRequest
- Son SOAP isteğinde gönderilen XML'i döndürür.
Bu yöntem yalnızca SoapClient
nesnesi, izleme seçeneği TRUE
olarak ayarlandığında oluşturulduğunda çalışır. manuel
Örnek:
<?php
$client = new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
?>
Şu an bunu kullanıyorum, sadece gönderilmeden önce XML'i görüp görmediğini bilmek istedim. Sanırım bu soruya cevap veriyor - yok! – bcmcfc
Bir not olarak, SOAP Sunucusu'nu denetlediyseniz, aslında sunucuya gönderilen orijinal SOAP isteğini yakalayabilirsiniz. Bunun için SOAP Sunucusu'nu genişletmeniz gerekiyor.
Bir örnek kod:
class MySoapServer extends SoapServer
{
public function handle($request = null)
{
if (null === $request)
$request = file_get_contents('php://input');
// Log the request or parse it...
}
}
- 1. Grafik Çubuğu'ndaki Action Çubuğunu önizleyebilir miyim?
- 2. Önizleme CURL talebi göndermeden önce
- 3. Form göndermeden önce bir Ajax isteği gönderme
- 4. Başvuru formunu göndermeden önce geçerli olur. Jquery
- 5. Temel kurucuya göndermeden önce parametre değerlerini değiştirme
- 6. PHP'de göndermeden önce bir JSON nesnesini sıkıştırın
- 7. Göndermeden önce bir giriş alanı değiştirin
- 8. Ağ kartına göndermeden önce paket nasıl değiştirilir?
- 9. Formları göndermeden önce boş değerleri silme
- 10. jQuery kullanarak formu göndermeden önce onay
- 11. Göndermeden önce bir şeyler nasıl yapılır?
- 12. Bir uygulamayı göndermeden önce itunes bağlantısını indirin
- 13. Dropzone.js sunucusundan görüntü göndermeden önce cropper.js'yi kullanma
- 14. Göndermeden önce nasıl bir iletişim kutusu gösterebilirim?
- 15. Önceki verisi temizle Talep göndermeden önce
- 16. Facebook Graph Api AppRequest 'Göndermeden önce bir daha sorma ...'
- 17. Laravel kullanarak denetleyiciye posta göndermeden önce posta yapılandırması nasıl değiştirilir?
- 18. Django ile göndermeden önce bir form için değerler nasıl eklenir?
- 19. Kik botumu incelemek için göndermeden önce nasıl test edebilirim
- 20. GPRS Kullanılabilirliğini nasıl kontrol etmelisiniz HttpConnection üzerinden veri göndermeden önce
- 21. Bir uygulamayı şifrelemeyle AppStore'a göndermeden önce ne hazırlanmalıdır?
- 22. Yii2'de göndermeden önce HTML e-posta içeriğini nasıl alabilirim?
- 23. php tarihinden önce 1970
- 24. kullanıcı formu göndermeden sonra kullanıcı
- 25. , jquery.validate belgesini göndermeden
- 26. AngularJS $ kapsamı. $ Scope.foo'nun $ watch özelliklerini izle, ancak eski değerleri sunucuya göndermeden önce değiştir
- 27. PHP kullanarak e-posta göndermek için form
- 28. Bir PHP yönlendirmesinde veri göndermek mümkün mü?
- 29. Scala Oynat ve Slick'te, yanıt göndermeden önce bitirme isteği nasıl alınır
- 30. çok parçalı form yazı, özü zip önce yanıt göndermek koajs
Eğer komut dosyasının bir parçası ya da "sadece" bir hata ayıklama aracı olarak (böylece incelemek için ama hiç senaryoyu değiştirmek için daha iyi olacak şekilde bunu yapmak istiyor musunuz araçları ile nesne) – VolkerK
Sadece hata ayıklamak için. – bcmcfc