TypeError: недопустимые аргументы для setopt в Pycurl python flask API Разработка - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь создать API Webservice с использованием фляги Python.Когда я выполняю этот код ниже:

http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER='1234'&SESSIONKEY=94194202323

... он работает нормально.Но я не смог передать STUDENTNUMBER этой функции.

Я пробовал два способа:

  1. Concat построить строку и передать ее c.setopt(c.URL,) этой функции

    а.Способ 1
    б.Способ 2
    с.Способ 3

Этим путем я получил ту же ошибку:

Ошибка типа: недопустимые аргументы для setopt

Передайте переменную, используя c.setopt (c.POSTFIELDS, post_data)

a.Способ 4

Таким образом, я получил ту же ошибку:

Метод не разрешен.Пожалуйста, см. Для построения действительных запросов к услуге

Так что я иду по этой ссылке:

b.Способ 5

Таким образом, я получил ту же ошибку

TypeError: недопустимые аргументы для setopt

Путь 1:

student_url = " http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%student_number;
 c.setopt(c.URL,student_url)

Путь 2:

c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%(student_number))

Путь 3:

c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%student_number)

Способ 4:

c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323")
c.setopt(c.POSTFIELDS, 'STUDENTNUMBER = 1234')

Способ 5:

post_data ={'STUDENTNUMBER' : '1234'}
c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&SESSIONKEY=94194202323")
c.setopt(c.POSTFIELDS, post_data)
c.setopt(pycurl.POST, 1)

Как я могу сделать эту работу?

1 Ответ

0 голосов
/ 19 января 2019

Похоже, это не вопрос Flask.Кажется, вы пытаетесь написать некоторый код для запроса API (который может работать на Flask).

Я предлагаю использовать для этого Python запросы библиотеку, так как вы можете затем определить свойпараметры как словарь, который намного проще. Не путать с Flask.request, что совсем другое!

import requests
url = 'http://localhost/Service/API/Services.svc/XMLService/Students'
params = {'SEARCHBY': 'StudentNo', 
          'STUDENTNUMBER': '1234',
          'SESSIONKEY': 94194202323}
r = requests.get(url, params)

Последняя строка выше отправляет запрос, и вы можете увидеть полный URL с:

>>> print (r.url)
http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=1234&SESSIONKEY=94194202323

Или напечатайте код ответа, который в моем случае - 404:

>>> print(r)
<Response [404]>

Если ответ содержит данные, вы можете получить к ним доступ через r.text:

>>> print (r.text)
I am the 404's response body.
...