【问题标题】:HTTP POST with XML data does not work in Django-Piston带有 XML 数据的 HTTP POST 在 Django-Piston 中不起作用
【发布时间】:2012-02-18 16:49:53
【问题描述】:

我已经用 django 活塞实现了 API,它从 sms/mms 获取数据。对于 MMS 案例,我必须发布带有图像和其他的 XML 数据。这是我在 handlers.py 上的代码 sn-p

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"

【问题讨论】:

  • 检查 POST 时返回的 400(使用 Firebug 或 Chrome/Safari 网络检查器)。可能是您发送了不恰当的论据 - 活塞应该给您某种回馈
  • 它的 api 并且我正在使用 httpRequester 发布这个,那么我如何使用 Firebug 来检查这个?请提出建议。

标签: python django django-piston


【解决方案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', )

【讨论】:

    【解决方案2】:

    尝试hurl.it 进行 API 测试。检查您的帖子数据。如果需要,设置您的标题信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2011-12-23
      • 1970-01-01
      相关资源
      最近更新 更多