Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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将数据发布到服务器,并在android中获得正确或错误的响应_Java_Android_Json_Http Post - Fatal编程技术网

Java 使用http Post将数据发布到服务器,并在android中获得正确或错误的响应

Java 使用http Post将数据发布到服务器,并在android中获得正确或错误的响应,java,android,json,http-post,Java,Android,Json,Http Post,我想使用AsyncTask发布EmailID和Password,并获得正确或错误的响应,如何做到这一点。我们使用的是json。我看到了一些链接,但不明白。 下面是我的代码。提前谢谢 private class GetLoginDataTask extends AsyncTask<Void, Void, String[]> { @Override protected void onPreExecute() { super.onPreExecute();

我想使用
AsyncTask
发布
EmailID
Password
,并获得正确或错误的响应,如何做到这一点。我们使用的是
json
。我看到了一些链接,但不明白。 下面是我的代码。提前谢谢

private class GetLoginDataTask extends AsyncTask<Void, Void, String[]> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        m_ProgressDialog = ProgressDialog.show(Login.this, "Please wait..", "Retrieving data ...", true);
        m_ProgressDialog.setContentView(R.layout.progress);
        m_ProgressDialog.show();
    }

    @Override
    protected String[] doInBackground(Void... params) {
        // Simulates a background job.
        String mStrings[] = { "" };
        try {
            HttpClient client = new DefaultHttpClient();
            String postURL = "http://192.168.0.126/MeritServices/MeritService.svc/Login";
            HttpPost post = new HttpPost(postURL);
            List<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("EmailID", strEmail));
            param.add(new BasicNameValuePair("Password", strPassword));
            UrlEncodedFormEntity ent = new UrlEncodedFormEntity(param, HTTP.UTF_8);
            post.setEntity(ent);
            HttpResponse responsePOST = client.execute(post);
            HttpEntity resEntity = responsePOST.getEntity();
            if (resEntity != null) {
                Log.i("RESPONSE :::: ", EntityUtils.toString(resEntity));
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("ERROR ::: ", e.toString());
        }
        return mStrings;

    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String[] result) {
        System.out.println("ProgressBar Dismiss");
        super.onPostExecute(result);
        m_ProgressDialog.dismiss();
    }

}
私有类GetLoginDatask扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
m_ProgressDialog=ProgressDialog.show(Login.this,“请稍候…”,“正在检索数据…”,true);
m_ProgressDialog.setContentView(R.layout.progress);
m_ProgressDialog.show();
}
@凌驾
受保护字符串[]doInBackground(Void…params){
//模拟后台作业。
字符串mStrings[]={”“};
试一试{
HttpClient=new DefaultHttpClient();
字符串姿势=”http://192.168.0.126/MeritServices/MeritService.svc/Login";
HttpPost=新的HttpPost(postrl);
List param=new ArrayList();
参数add(新的BasicNameValuePair(“EmailID”,strEmail));
参数add(新的BasicNameValuePair(“密码”,strPassword));
UrlEncodedFormEntity ent=新的UrlEncodedFormEntity(param,HTTP.UTF_8);
邮政实体(ent);
HttpResponse responsePOST=client.execute(post);
HttpEntity当前状态=responsePOST.getEntity();
if(最近性!=null){
Log.i(“RESPONSE::”,EntityUtils.toString(resEntity));
}
}捕获(例外e){
e、 printStackTrace();
Log.i(“错误::”,例如toString());
}
返回mstring;
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串[]结果){
System.out.println(“ProgressBar解除”);
super.onPostExecute(结果);
m_ProgressDialog.discouse();
}
}

在您的代码中,
resEntity
包含您正在查找的内容,即您的JSON字符串。 你可以通过

InputStream inputStream = resEntity.getContent();
然后读字符串。这里有一个这样做的例子:

但是,如果服务器端发生了任何意外情况,因此它不会返回JSON,那么在访问实体的内容之前,您需要先了解这些情况。 您可以通过检查状态代码来执行此操作:

Integer responseCode = responsePOST.getStatusLine().getStatusCode();
然后可以检查响应代码。如果是200,就“OK”,一切都很顺利。404是找不到页面,500是内部服务器错误,还有更多错误。当然,这也取决于服务器的实现。
您可以在此处查找所有状态代码的定义:


如果你只想知道你的帖子成功了,服务器回复了“OK”,那么处理状态代码对你来说可能就足够了。

我不明白。您拥有请求内容、帖子、异步任务和结果读取。您缺少什么?您从服务器得到的响应是什么?您的代码似乎很好,您面临的问题是什么,共享错误还是错误logcat@HussainAkhtarWahid我得到响应::(11135):ï»?请求错误

服务器在处理请求时遇到错误。请参阅帮助页面,了解如何构造对服务的有效请求。

我尝试进行虚拟测试失败,连接被拒绝192.168.0.126,是否可以尝试一下??