2016-03-30 18 views
0

Bir Python komut dosyası aracılığıyla bir SMS ağ geçidi çağırmaya çalışıyorum. aşağıdaki gibi bir http isteği oluşturmak:Python urllib2 Bir sms ağ geçidine POST [Errno 10054]

http_req = url 
http_req += '?' 
http_req += 'producttoken='+token 
http_req += '&msg='+urllib.quote(message) 
http_req += '&to='+dest 
http_req += '&from='+sender 

Sonra bir isteği göndermek: Sonuç olarak

req = urllib2.Request(http_req) 
try: 
    response = urllib2.urlopen(req) 
    response_url = response.geturl() 
    print response_url 
    if response_url==url: 
    print 'SMS sent!' 
except urllib2.URLError, e: 
    print 'Send failed!' 
    print e.reason 

, ben alırsınız:

Send failed! 
[Errno 10054] An existing connection was forcibly closed by the remote host 

Ancak, kompoze url kopyalarsanız (print http_req'u kullanarak) bir web tarayıcısında, Hedef numarasında (dest) bir SMS (yukarıdaki kodda message değeri) alırım. Ben Python gelen isteği göndermek olduğunu

https://smsgw.com/gateway.ashx?producttoken=c98f7b71-xyz23-4429-9daa-9647&body=SMS%20Gateway%20Test%20message&to=00331234567&from=MyApp 

aslında bir ilgisi var mı: url gibi bir şey? Örneğin, postaya bir başlık ekleyerek herhangi bir geçici çözüm var mı?

+0

Belki de kullanıcı aracısı ..., python isteğiniz ile "el yapımı" isteği arasındaki farkı görmek için sahibi ya da web tarayıcısını kullanın. – Goufalite

+0

Web tarayıcısında "el yapımı" talebin nasıl göründüğünü açıklar mısınız? – QuestionMark

+1

Kullandığınız tarayıcıya bağlıdır: Chrome'da F12 tuşuna basarak geliştirici araçlarını açın, sayfayı yeniden yüklemek için F5 tuşuna basın ve ağ sekmesini kontrol edin. – Goufalite

cevap

0

Bu hata genellikle uzak ana bilgisayarın beklediği biçimde veri almadığı ve bağlantıyı sıfırladığı zaman oluşur. (Diğer şeyler bu hataya neden olabilir, örneğin başarısız bir ağ bağlantısı veya uzaktaki ana bilgisayardaki sorunlar gibi, ancak senaryoda görünmeleri pek olası görünmez.)

Gönderilen gerçek paketler arasındaki farkı belirlemek için wireshark kullanmayı deneyebilirsiniz. komut dosyasını buna göre değiştirin.

Paketin ne kadar ilerlediğine bağlı olarak wireshark sizin için çalışmayabilir. Bu durumda, Service Trace Viewer kullanmayı deneyebilirsiniz.