Не удается отправить данные на мой сервер с помощью 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

Что будет делать