Я разработал приложение для Android, которое сделает снимок цифры и отправит ее на сервер. На сервере изображение будет проходить через нейронную сеть и распознать цифру и отправить результат обратно. Я получаю ошибку 500 вместо результатов.Получение ошибки 500 с использованием okHTTP на Android при отправке фотографии на сервер
Вот мой код для андроид:
//sendbmp is the photo taken from the camera. Its file type is .bmp
sendbmp = Tools.getFocusedBitmap(getApplicationContext(), camera, data, focusBox.getBox());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
jpgbitmap = sendbmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byteArray = stream.toByteArray();
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mJSONArray = new JSONArray(byteArray);
base64array = Base64.encodeToString(byteArray,Base64.DEFAULT);
}
} catch (JSONException e) {
e.printStackTrace();
}
new Networkconnection().execute();
Это код Networkconnection() это где я отправить фотографию на сервер. Я использую okhttp:
private class Networkconnection extends AsyncTask<Void, Void, String> {
String result;
String new_result;
@Override
protected String doInBackground(Void... params) {
Response response;
OkHttpClient client = new OkHttpClient();
String byteValue = String.valueOf(base64array);
RequestBody body = RequestBody.create(MediaType.parse("json"), base64array);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try {
response = client.newCall(request).execute();
result = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
Это мой стороне сервера, используя флягу:
@app.route('/', methods=['GET','POST'])
def hello_world():
received_img = request.args.get('body')
decode_Imge = pic.open(BytesIO(base64.b64decode(received_img)))
result = Net.image_function(decode_Imge)
return result
if __name__ == '__main__':
Net = Network([784, 100,10])
for x in range(0,4):
training_data, validation_data,test_data = load_data_wrapper()
Net.SGD(training_data, 30, 10, 5.0, test_data = test_data)
app.run(host ="MyIP") //In my code I actually have my ip address and not "MYIP"
Примечание: При запуске сервера я не получаю сообщение об ошибке. Все классы находятся на одном документе для сервера. При печати отслеживающий я получаю следующее: Traceback (most recent call last): File "C:\Python27\lib\site-packages\werkzeug\serving.py", line 648, in inner fd = int(os.environ['WERKZEUG_SERVER_FD']) File "C:\Python27\lib\os.py", line 425, in __getitem__ return self.data[key.upper()] KeyError: 'WERKZEUG_SERVER_FD'
Здесь ошибка я получаю, к сожалению, часть ошибки блокируется с помощью кнопки:
Пожалуйста, разместите полученную трассировку/ошибку. – jumbopap
Это нормально? Надеюсь, что кнопка не проблема – Suji
Процесс Flask должен вызывать какую-то ошибку, вы получаете там трассировку? – jumbopap