我在燒瓶中有一個項目來獲取參數并且它可以工作,如果我通過郵遞員打電話。但是如果我用 java 代碼來做,它會返回錯誤 400。燒瓶:@app.route('/predict', methods=["POST"])def predict(): print("\nPredict......") print(request.form) print(request.form['textToPredict']) print("\nPredict......2") print(request.form.get("textToPredict")) #print("Text...."+request.form['textToPredict'].toString()) # new text to predict text_to_predict = [request.form['textToPredict'].lower()] #[request.form.get('textToPredict')] # ["asmatica desde infancia ex fumante 15 am dopc em uso de o2 ha 1 ano em uso de alenia 400 /12 e formoterol 12 2 x dia mvdiminuido sra brn f 2 t s/s cta rx pfp"] # este deve retornar CID Z00 #print("Text....:"+str(text_to_predict)) # count_vect gera as posi??es dos vetores de cada palavra do texto. new = count_vect.transform(text_to_predict) # carrega o modelo treinado loaded_model = cPickle.load(open(fname, 'rb')) # faz a predi??o do novo texto de entrada result = loaded_model.predict(new) print(result) # accuracy_score(y_test, result) json_dict = request.get_json() text = ''.join(result) textPredicted = text data = {'textPredicted': textPredicted} return jsonify(data), 200java的輸出(打印燒瓶代碼):Predict......ImmutableMultiDict([('{"textToPredict":"coriza"}', '')])127.0.0.1 - - [22/Oct/2018 16:07:34] "POST /predict HTTP/1.1" 400 -郵遞員的輸出(打印 FLASK 代碼):Predict......ImmutableMultiDict([('textToPredict', 'coriza, dificuldade em respirar, febre, dor no corpo')])coriza, dificuldade em respirar, febre, dor no corpoPredict......2coriza, dificuldade em respirar, febre, dor no corpo['J06 ']127.0.0.1 - - [22/Oct/2018 16:20:00] "POST /predict HTTP/1.1" 200 -所以,看起來我的錯誤是在發送帖子時,它是由 java 代碼組成的。我不明白錯誤的原因。在我看來,參數在到達燒瓶時是不正確的,根據它提供的輸出。我需要一些幫助來解決這個問題。謝謝你。
1 回答
精慕HU
TA貢獻1845條經驗 獲得超8個贊
您的 java 代碼不正確,因為您試圖將 json 對象字符串發送到表單 url 編碼數據中。看起來像你的 Flask 控制器需要表單參數。你可以像這樣改變你的java代碼
String urlParam = "textToPredict="+predicaoVo;
byte[] postData = urlParam.getBytes( StandardCharsets.UTF_8 );
int dataLength = postData.length;
postConnection.setRequestProperty( "Content-Length", Integer.toString(dataLength));
try( DataOutputStream wr = new DataOutputStream(postConnection.getOutputStream())) {
wr.write(postData);
}
添加回答
舉報
0/150
提交
取消
