使用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一样。
答
在你的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
这将做
您的问题非常长 - 我的第一个建议是,您将问题简化为:“将数据发送到我的服务器并使用AsyncHttpClient处理响应时出现问题”。一旦你经历了这个阶段,你可以在学习中发表更多的问题。 – ishmaelMakitla
@ishmaelMakitla谢谢你的建议,非常感谢。 –
是否有帮助? – Elltz