我有一个调用python rest服务的delphi程序。
python rest服务看起来像:
@app.route('/flagger/api/v1.0/stem', methods=['GET'])
def stem_request():
print request.json
if not request.json or u'text' not in request.json:
bad_request('no "text" field given')
text = request.json['text']
return jsonify(stemmed=stem(text)), 200
当我对该服务进行卷曲请求时,我得到答案:
C:\Program Files\Curl>curl -i -H "Content-Type: application/json" -X GET -d "{\"text\":\"hij geeft mij appels\"}" h
ttp://192.168.99.100:5000/flagger/api/v1.0/stem
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 30
Server: Werkzeug/0.11.3 Python/2.7.10
Date: Thu, 28 Jan 2016 13:17:36 GMT
{
"stemmed": "geeft appel"
}
在我的delphi XE7 / Pro程序中,我有 Restclient,Restrequest 和 Restresponse 组件。
所有组件都有contentype = application / json
restrequest.method = rmGet
到Restrequest我添加了一个参数:
contenttype=ctapplication_json
kind=pkrequestbody
name=text
value=hij geeft mij appels.
使用以下代码启动请求:
MemoContent.Lines.Add('Start...');
RESTClient1.BaseURL:='http://192.168.99.100:5000/flagger/api/v1.0/stem';
MemoContent.Lines.Add('Request Params.Name= '+RESTRequest1.Params.Items[0].Name);
MemoContent.Lines.Add('Request Params.Value= '+RESTRequest1.Params.Items[0].Value);
RESTRequest1.Execute;
MemoContent.Lines.Add('Status= '+RESTResponse1.StatusText);
MemoContent.Lines.Add('Content= '+RESTResponse1.content);
MemoContent.Lines.Add('FullRequestURI= '+RESTResponse1.FullRequestURI);
MemoContent.Lines.Add('BaseURL= '+RESTClient1.BaseURL);
jValue:=RESTResponse1.JSONValue;
MemoContent.Lines.Add('Response Json= '+jValue.tostring);
MemoContent.Lines.Add('Statustext= '+RESTResponse1.StatusText);
请求已执行,但我总是收到错误的请求答案:
Start...
Request Params.Name= text
Request Params.Value= dit is een test
Status= HTTP/1.0 400 BAD REQUEST
Content= {
"error": "bad request"
}
FullRequestURI= http://192.168.99.100:5000/flagger/api/v1.0/stem
BaseURL= http://192.168.99.100:5000/flagger/api/v1.0/stem
Response Json= {"error":"bad request"}
Statustext= HTTP/1.0 400 BAD REQUEST
任何人都知道这里有什么问题?
我无法使用其余的调试器,但它可以与CURL和其他其他客户端一起使用
感谢。