使用AsyncHttpClient无法发送数据到我的服务器(字符串变量不通过)

问题描述:

我是一个在android开发(和编程一般)的新手,我使用android开发来教自己如何编程(这是我如何学习) ;所以我目前正在从一个程序接收来自用户的4个不同的数据输入,并通过HTTP post请求将它发送到我的本地覆盆子pi。 其中两个输入来自spinners,它们只是整数,另外两个来自EditText块,它只是接收数字作为输入,尽管我使用字符串从EditText获取数据。查找下面提到的代码摘要。使用AsyncHttpClient无法发送数据到我的服务器(字符串变量不通过)

//From MainActivity class and file. 
    public static int data1; 
    public static int data2; 
    public static String data3; 
    public static String data4; 

然后,用户类型的数据问...变量发生变化(我测试了这一点,通过不断地将它们打印出来敬酒和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显示它们时空;但是INT相关型号变量并显示出来......这里是编码到:

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一样。

+0

您的问题非常长 - 我的第一个建议是,您将问题简化为:“将数据发送到我的服务器并使用AsyncHttpClient处理响应时出现问题”。一旦你经历了这个阶段,你可以在学习中发表更多的问题。 – ishmaelMakitla

+0

@ishmaelMakitla谢谢你的建议,非常感谢。 –

+0

是否有帮助? – Elltz

在你的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 

这将做