2012-01-25 54 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', )