Не удается отправить данные на мой сервер с помощью AsyncHttpClient (переменные String не передаются)
0 Tswelopele Moshe [2016-08-12 00:55:00]
Я новичок в разработке Android (и программирование в целом), и я использую разработку Android, чтобы научить себя, как программировать (что я узнаю); поэтому я в настоящее время работаю над программой, которая получает 4 разных ввода данных от пользователя и отправляет их через HTTP-запрос на мой локальный малиновый pi. Два входа поступают из прядильщиков, и они всего лишь целые числа, а два других - из блока EditText
который просто получает числа в качестве входов, хотя я использовал строки для получения данных из EditText
. Найдите краткое изложение приведенного выше кода.
//From MainActivity class and file.
public static int data1;
public static int data2;
public static String data3;
public static String data4;
Затем пользователь вводит данные в заданные данные... переменные меняются (я тестировал это, постоянно распечатывая их на Toasts и TextView
). Переменные задаются и вызывают из другого файла и класса " dataProcessingFile
". Так я вызвал и установил их в файле MainActivity
.
dataProcessingFile dpFob = new dataProcessingFile();
dpFob.setData1(position); //position from the spinner
одинаковые для всей информации только разные функции для каждого, получение данных также одно и то же - и оно работает
dpFob.getData1(); /* usually convert it to string for display with
String.valueOf(dpFob.getData1()); */
Все работает нормально, пока здесь: часть, где я должен отправить данные на свой сервер. Я сделал еще один файл и класс, импортировал все библиотеки, в которых я нуждался, никакой ошибки компиляции, но когда я получаю связанные с String
переменные в основной функции этого нового класса, они регистрируются как пустые, даже когда я показываю их с TextView
, все еще пустым; тем не менее, все выпущенные переменные появляются... вот кодирование:
package com.example.tswelo.myPackageName;
import android.util.Log;
import com.loopj.android.http.*;
import cz.msebera.android.httpclient.*;
public class SendRequest {
public void runSendRequest()
{
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://192.168.43.20/cgi-bin/index.cgi", new
AsyncHttpResponseHandler() {
dataProcessingFile secActObj = new dataProcessingFile ();
RequestParams params = new RequestParams();
@Override
public void onStart() {
params.put("PN_VOU",secActObj.getData3() + " " +
secActObj.getData4()); // problem arises here
params.put("UC_AC",secActObj.getData1() + " " +
secActObj.getData2());
Log.e("params", secActObj.getData3()+ " " +secActObj.getData4()
); // problem arises here, shows nothing, just an empty space!
Log.e("params2", secActObj.getData1() + " " +
secActObj.getData2());
}
@Override
public void onSuccess(int statusCode, Header[] headers, byte[]
response) {
// called when response HTTP status is "200 OK"
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[]
errorResponse, Throwable e) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
}
@Override
public void onRetry(int retryNo) {
}
});
}
}
Длина цифр данных 3 составляет 12 - 16 номеров, а данные 4 - 10 номеров. Когда я попытался преобразовать их в целые числа, программа разбилась! я использовал Integer.valueOf(getData3());
// и то же самое для data4.
java variables android class android-asynctask
1 ответ
0 Elltz [2016-08-12 01:12:00]
взгляните в свой класс SendRequest
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://192.168.43.20/cgi-bin/index.cgi", new
AsyncHttpResponseHandler() {
dataProcessingFile secActObj = new dataProcessingFile ();
//dataProcessingFile has been initialized. everything is empty in it
Я думаю, что вводят объект dataProcessingFile в ваш класс, как это
public class SendRequest {
private dataProcessingFile secActObj;
public SendRequest(dataProcessingFile a){
secActObj = a;
....
в методе sendRequest
public void runSendRequest() {
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://192.168.43.20/cgi-bin/index.cgi", new
AsyncHttpResponseHandler() {
dataProcessingFile secActObj = new dataProcessingFile ();//now remove this
Что будет делать