2010-07-05 47 views
-1

我正在開發一個應用程序,使用PyQT4將一些數據發佈到Web服務以發送SMS。該應用程序在Ubuntu 10.04上完美運行。但是當我在Windows上部署它時,我得到了BadStatusLine錯誤。我在Windows 7上運行Python 2.6.4。Python中的BadStatusLine錯誤(僅適用於Windows)

錯誤消息和源代碼如下。由於它是由Qt Designer自動生成的,因此我沒有放置gui.py。

請幫我調試它。

錯誤消息:

Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "C:\Python26\lib\threading.py", line 525, in __bootstrap_inner 
    self.run() 
    File "D:\Temp\gp\library.py", line 14, in run 
    f = urllib2.urlopen(urllib2.Request("http://masnun.com/aloashbei/sms/send",u 
rllib.urlencode(self.data))) 
    File "C:\Python26\lib\urllib2.py", line 124, in urlopen 
    return _opener.open(url, data, timeout) 
    File "C:\Python26\lib\urllib2.py", line 389, in open 
    response = self._open(req, data) 
    File "C:\Python26\lib\urllib2.py", line 407, in _open 
    '_open', req) 
    File "C:\Python26\lib\urllib2.py", line 367, in _call_chain 
    result = func(*args) 
    File "C:\Python26\lib\urllib2.py", line 1146, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 
    File "C:\Python26\lib\urllib2.py", line 1119, in do_open 
    r = h.getresponse() 
    File "C:\Python26\lib\httplib.py", line 974, in getresponse 
    response.begin() 
    File "C:\Python26\lib\httplib.py", line 391, in begin 
    version, status, reason = self._read_status() 
    File "C:\Python26\lib\httplib.py", line 355, in _read_status 
    raise BadStatusLine(line) 
BadStatusLine 

App.Py

#!/usr/bin/python 

import os, sys 
from PyQt4 import QtCore, QtGui 
import gui, library 

app = QtGui.QApplication(sys.argv) 
mainWindow = QtGui.QMainWindow() 
mainWindow.ui = gui.Ui_MainWindow() 
mainWindow.ui.setupUi(mainWindow) 

appUi = mainWindow.ui 

# Add the application logic 
handler = library.Application(mainWindow) 
appUi.sendButton.clicked.connect(handler.send) 
appUi.actionQuit.triggered.connect(sys.exit) 



mainWindow.show() 



sys.exit(app.exec_()) 

library.py

#!/usr/bin/python 
from PyQt4 import QtGui 
from threading import Thread 

class Req(Thread): 
    def __init__(self,data,callback): 
     self.data = data 
     self.callback = callback 
     Thread.__init__(self) 

    def run(self): 

     import urllib, urllib2, json 
     f = urllib2.urlopen(urllib2.Request("http://masnun.com/aloashbei/sms/send",urllib.urlencode(self.data))) 
     resp = json.loads(f.read()) 
     status = resp['SendSMSResponse']['status'] 
     self.callback(status) 


#8801711960803 
class Application(object): 

    def __init__(self,mainWindow): 
     self.mainWindow = mainWindow 
     self.ui = mainWindow.ui 
     self.status = "" 

    def quit(self): 
     import sys 
     sys.exit() 


    def send(self): 
     data = {} 
     data['registrationID'] = self.ui.username.text() 
     data['password'] = self.ui.password.text() 
     data['sourceMsisdn'] = self.ui.phoneNumber.text() 
     data['destinationMsisdn'] = self.ui.toBox.text() 
     data['smsPort'] = 7424 
     data['msgType'] = 4 
     data['charge'] = 0.00 
     data['chargedParty'] = self.ui.phoneNumber.text() 
     data['contentArea'] = 'gpgp_psms'; 
     data['msgContent'] = self.ui.smsText.text(); 


     req = Req(data,self.getStatus) 
     req.start() 
     req.join() 



     if self.status == 'OK': 
      QtGui.QMessageBox.information(None,"SMS Sent","SMS Sent successfully!") 
      self.status = "" 
     else: 
      QtGui.QMessageBox.critical(None, "ERROR!","The SMS could not be sent!",QtGui.QMessageBox.Ok | QtGui.QMessageBox.Default,QtGui.QMessageBox.NoButton) 
      self.status = "" 

    def getStatus(self,status): 
     self.status = status 
+0

這不是一個答案 - 但我現在在Ubuntu機器上看到了同樣的問題,但它不會發生在Windows上。我正在使用urllib2 urlopen。我試圖添加一個延遲,假設它是一個服務器問題,但它似乎是它在urllib2某處的錯誤。我的網址似乎不是unicode。是否有其他人反覆看到這個異常(BadStatusLine)?任何幫助將不勝感激。 – user1084307 2011-12-06 20:25:56

回答

0

嗯,我剛它的ID。你不能混用Unicode和字符串。我也用urllib代替urllib2。有效。但我不確定問題來自哪裏:(

相關問題