Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP POST请求在emulator上工作,但不';真实设备上的t_Java_Android_Http Post - Fatal编程技术网

Java HTTP POST请求在emulator上工作,但不';真实设备上的t

Java HTTP POST请求在emulator上工作,但不';真实设备上的t,java,android,http-post,Java,Android,Http Post,我构建了一个简单的应用程序,它使用HTTP POST请求从远程数据库获取数据。我决定改变它的布局,但现在我意识到请求在真正的设备上不起作用 我只是简单地更改布局并在这个新项目上复制相同的类。我不明白怎么了。当我使用应用程序时,它会在启动屏幕上停止活动并在那里等待。我查看了代码,发现当执行POST请求时,我会停止。 当我在模拟器上执行项目时,它工作得非常好 这是我的班级: public class MyHttpPostRequest extends AsyncTask<String, Voi

我构建了一个简单的应用程序,它使用HTTP POST请求从远程数据库获取数据。我决定改变它的布局,但现在我意识到请求在真正的设备上不起作用

我只是简单地更改布局并在这个新项目上复制相同的类。我不明白怎么了。当我使用应用程序时,它会在启动屏幕上停止活动并在那里等待。我查看了代码,发现当执行POST请求时,我会停止。 当我在模拟器上执行项目时,它工作得非常好

这是我的班级:

public class MyHttpPostRequest extends AsyncTask<String, Void, String[]> {

private String link;
private String querySql;

public MyHttpPostRequest(String remoteLink, String richiestaSql) {
    this.link = remoteLink;
    this.querySql = richiestaSql;
}

@Override
protected String[] doInBackground(String... params) {

    // Create a new HttpClient and Post Header
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost request = new HttpPost(this.link);

    BufferedReader bufferedReader = null;
    List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
    postParameters.add(new BasicNameValuePair("query", this.querySql));

    StringBuffer stringBuffer = null;

    String[] token = new String[600];

    try {
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParameters);
        request.setEntity(entity);

        HttpResponse response= httpClient.execute(request);

        bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        stringBuffer = new StringBuffer("");
        String line = "";
        String LineSeparator = System.getProperty("line.separator");
        int i=0;
        while ((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line + LineSeparator); 
            token[i] = line + LineSeparator;
            i++;
        }
        bufferedReader.close();
    } catch(Exception e){

    }

    return token;
}

@Override
protected void onPostExecute(String[] result) {
    super.onPostExecute(result);
}

public void eseguiRichiesta(){
    this.execute(this.link, this.querySql);
}

public void setValues(String remoteLink, String richiestaSql){
    this.link = remoteLink;
    this.querySql = richiestaSql;
}   

public void setLink(String link){
    this.link = link;
}

public void setRequest(String requestSQL){
    this.querySql = requestSQL;
}
}
公共类MyHttpPostRequest扩展了异步任务{
私有字符串链接;
私有字符串查询SQL;
公共MyHttpPostRequest(字符串remoteLink、字符串richiestaSql){
this.link=remoteLink;
this.querySql=richiestaSql;
}
@凌驾
受保护字符串[]doInBackground(字符串…参数){
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost请求=新的HttpPost(this.link);
BufferedReader BufferedReader=null;
List postParameters=new ArrayList();
add(新的BasicNameValuePair(“query”,this.querySql));
StringBuffer-StringBuffer=null;
String[]令牌=新字符串[600];
试一试{
UrlEncodedFormEntity实体=新的UrlEncodedFormEntity(后参数);
请求。设置实体(实体);
HttpResponse response=httpClient.execute(请求);
bufferedReader=新的bufferedReader(新的InputStreamReader(response.getEntity().getContent());
stringBuffer=新的stringBuffer(“”);
字符串行=”;
字符串LineSeparator=System.getProperty(“line.separator”);
int i=0;
而((line=bufferedReader.readLine())!=null){
stringBuffer.append(行+行分隔符);
令牌[i]=行+行分隔符;
i++;
}
bufferedReader.close();
}捕获(例外e){
}
返回令牌;
}
@凌驾
受保护的void onPostExecute(字符串[]结果){
super.onPostExecute(结果);
}
公共空间eseguiRichiesta(){
execute(this.link,this.querySql);
}
公共void集合值(字符串remoteLink、字符串richiestaSql){
this.link=remoteLink;
this.querySql=richiestaSql;
}   
公共无效设置链接(字符串链接){
this.link=link;
}
公共void setRequest(字符串requestSQL){
this.querySql=requestSQL;
}
}

你真的在Android应用程序上使用splashscreen吗?是的,我使用它是因为在后台我检查数据库的一致性。。。所以我不希望应用程序只是一个白色的屏幕。当我说splashscreen时,我的意思是整个屏幕都被一个带有进度条的图像覆盖了……为什么不使用进度指示器呢?我会考虑您的建议,但现在我的首要任务是HTTP POST请求问题。感谢您的建议…如果您的应用程序崩溃,请发布堆栈跟踪。崩溃详细信息已记录在logcat中。