Neden web hizmeti Bölü çizgisi bu kadar önemli?

5 Cevap php

PHP ve Python bir web hizmeti test edildi. Web hizmetinin adresi, diyelim edildi http://my.domain.com/my/webservice. Ben URL her şey iyi çalıştı kullanarak PHP web hizmeti test edildiğinde. Ben SOAPpy kullanarak aynı konumu ancak Python ancak kullanıldığı zaman, ben bir hata var.

Aşağıda web hizmeti (Python) ile iletişim kurmak için kullanılan kod:

from SOAPpy import WSDL
server = SOAPProxy('http://my.domain.com/my/webservice', namespace)
server.myFunction()

Ben sunucudan aldığım cevap:

HTTPError: <HTTPError 301 Moved Permanently>

Ben web hizmeti konuma bir bölü eklerseniz çalıştığını anlamaya!

from SOAPpy import WSDL
server = SOAPProxy('http://my.domain.com/my/webservice/', namespace)
server.myFunction()

Neden sondaki eğik çizgi eksikliği hatası neden olur?

5 Cevap

Farklı URL'ler demektir. http://my.domain.com/my/webservice bir dosya webservice my klasöründe ifade eder. http://my.domain.com/my/webservice/ benim / webservice klasörünün içindeki varsayılan belge anlamına gelir.

Birçok websunucu otomatik olarak bu URL'lerin düzeltir, ama onlara bunu yapmak için gerekli değildir.

Because the actual server URL is: http://my.domain.com/my/webservice/

PHP kütüphanesi varsayılan yönlendirmeleri takip edilmelidir.

Hata Eğer web sunucusu tarafından ucundaki çizgi ile URL'ye yönlendiriliyorsunuz anlamı 301 yönlendirme olduğunu.

PHP otomatik bu yönlendirmeyi izleyin ve böylece hata atmak olmayacak gibi görünüyor, Python olmaz oysa. Sen aşağıdakileri yapmanız gerekir:

  1. Ilk URL'ye bağlanmak için çalışın
  2. Herhangi bir 301 yönlendirmesi yakalamak ve muhtemelen 302 de yönlendirir
  3. Bir yönlendirme varsa o zaman onun yerine o URL'ye bağlanmayı deneyin.

Yeni URL cevap başlıklarında mevcut olmalıdır.

HTH.

[Yasal Uyarı: Bu benim cevabın bir kopyasıdır from here. Bazı insanlar kopyalama bu tür sevmiyorum biliyorum, ama çizgi önemli olduğunu açıklıyor.]

Eğer bir sayfa hizmet Imagine

http://mydomain.com/bla

Bu içerir

<a href="more.html">Read more...</a>

Tıklamada, kullanıcının tarayıcı almak istiyorum http://mydomain.com/more.html. Yerine görev yapmıştı

http://mydomain.com/bla/

(Aynı içeriğe sahip), tarayıcı http://mydomain.com/bla/more.html almak istiyorum. URL bir dizine işaret ediyorsa, bu karışıklığı önlemek için, yönlendirme bir çizgi ekler.

Bir çizgi gerekirse, sunucuya kadar gibi bir soap-URL göründüğünü sunucu ve SOAP uygulamasına bağlıdır.

In your case, I assume that the target server is an apache server and the SOAP URL is actually a directory that contains your SOAP handling script. When you access http://my.domain.com/my/webservice on the server, apache decides that the directory is properly addressed as http://my.domain.com/my/webservice/ and sends a 301 redirect.

SABUN bir http POST, yönlendirme takip edilip edilmeyeceği karar için müşteriye onun kadar kullanır, ben sadece birini beklemek olmadığını varsayalım.

SOAP Diğer uygulamaları, örneğin, Java Apache Axis Servlet benziyor URL'leri, örneğin var http://domain.com/soap/webservice kesme işareti olmadan, bu durumda kesme işareti olmadan URL zaten var hiçbir dizin var, doğru.

Eksen de yönlendirmeler başarısız, ben düşünüyorum.