HTTP POST с данными XML не работает в Django-Piston - PullRequest
0 голосов
/ 25 января 2012

Я реализовал API с поршнем django, в котором его данные берутся из sms/mms.Для случая MMS я должен опубликовать данные XML с изображением и другие.Вот мой фрагмент кода на handlers.py

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')

, когда я публикую xml data с CURL, но он работает, но когда я использую Firefox, httprequester, это бросает меня "BAD REQUEST"

Ответы [ 2 ]

1 голос
/ 23 октября 2013

Проверьте это: Я получаю ошибку 400 Bad Request при использовании django-pneon

Создать промежуточное ПО как:

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', ) * +1010 *

0 голосов
/ 25 января 2012

Попробуйте hurl.it для тестирования API. Проверьте ваши данные. Установите информацию заголовка, если требуется.

...