2012-01-25 46 views
0

我已經使用django活塞實現了API,其中的數據來自sms/mms。對於MMS情況,我必須將XML數據與圖像和其他數據一起發佈。這裏是handlers.py使用XML數據的HTTP POST在Django-Piston中不起作用

def create(self, request,*args,**kwagrs): 
    try: 
     file_type = None     
     raw_data = request.raw_post_data     
     data = serializers.deserialize("xml", raw_data)  
     try:     
     parser = Parse(data.stream.getvalue()) 
     message = parser.get_message()     
     action_id = parser.get_action_id()      
     except Exception,e:    
     return HttpResponse(Response({'sender':parser.get_sender(),'error_description':str(e)}).get_error_response(), mimetype='text/xml')      

     if action_id in ['o','m','vt','vh','yritys']: 
     return self.post_message(request,parser) 
     elif action_id == 'poista' or action_id == 'lopeta': 
     return self.expired_message(request,parser) 
     elif action_id == 'tiedot': 
     return self.get_contact_info(request,parser)    
    except Exception,e: 
     ad_id = None 
     return HttpResponse(Response({'sender':parser.get_sender(),'error_description':str(e)}).get_error_response(), mimetype='text/xml') 

我的代碼片段,當我與CURL其工作張貼xml data,但是當我使用Firefoxhttprequester它扔我"BAD REQUEST"

+0

檢查POST時返回的400(使用Firebug或Chrome/Safari w eb檢查員)。這可能是你發送不適當的參數 - 活塞應該給你一些反饋 –

+0

以及它的API,我使用httpRequester發佈這個,所以我怎麼能檢查這與Firebug?請建議。 – paul

回答

0

嘗試hurl.it的API測試。檢查你的發佈數據。根據需要設置標題信息。

1

檢查: I get a 400 Bad Request error while using django-piston

創建中間件:

class ContentTypeMiddleware(object): 

    def process_request(self, request): 
     if 'charset=UTF-8' in request.META['CONTENT_TYPE']: 
      request.META['CONTENT_TYPE'] = request.META['CONTENT_TYPE'].replace('; charset=UTF-8','') 
     return None 

它添加在設置:

MIDDLEWARE_CLASSES =( 'app.middleware.ContentTypeMiddleware', )