Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 Android HttpClient异步任务_Java_Android_Json_Android Asynctask_Httpclient - Fatal编程技术网

Java Android HttpClient异步任务

Java Android HttpClient异步任务,java,android,json,android-asynctask,httpclient,Java,Android,Json,Android Asynctask,Httpclient,我已经在这个问题上纠缠了一两天了,所以我决定看看是否有人能帮我 我目前的目标是制作一个连接到Wamp服务器并执行其脚本的HttpPost。我实现了一个扩展AsyncTask的类,它包括3个必要的方法,这些方法是AsyncTask有效工作所必需的 我将首先向您展示用于将变量放入Json对象的代码,然后是初始化HttpPost的JSONParser类,然后执行它。 之后,我会告诉你所有关于日志错误和缩小问题范围的信息;你们都知道问题可能是什么,如果不想阅读下面的内容,简单地说,它是由调用解析器类的代

我已经在这个问题上纠缠了一两天了,所以我决定看看是否有人能帮我

我目前的目标是制作一个连接到Wamp服务器并执行其脚本的HttpPost。我实现了一个扩展AsyncTask的类,它包括3个必要的方法,这些方法是AsyncTask有效工作所必需的

我将首先向您展示用于将变量放入Json对象的代码,然后是初始化HttpPost的
JSONParser
类,然后执行它。
之后,我会告诉你所有关于日志错误和缩小问题范围的信息;你们都知道问题可能是什么,如果不想阅读下面的内容,简单地说,它是由调用解析器类的代码行引起的

注意:我使用它作为这类工作的起点,因此请理解它在传递参数方面很简单

进一步注意:我正在使用Eclipse,并且正在使用内置仿真器进行测试

方法-CreateNewUser

/**
 * Background Async Task to Create new user
 */
class CreateNewUser extends AsyncTask<String, String, String>{

/**
* Before starting background thread show progress dialog
*/
@Override
protected void onPreExecute(){
    super.onPreExecute();
    pDialog = new ProgressDialog(AddUserActivity.this);
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(true);
    pDialog.show();
}

/*
* Creating user
*/
@Override
protected String doInBackground(String... args){

    String username = inputUsername.getText().toString();
    String password = inputPassword.getText().toString();

    // Building parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("username", username));
    params.add(new BasicNameValuePair("password", password));

    // getting JSON object
    // Note that create user url accepts POST method
       JSONObject json = jsonParser.makeHttpRequest(url_create_user, "POST",params);               

    // check log cat for response
    Log.d("Create Response", json.toString());

        // check for success tag
        try {
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {
                // successfully created product
                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);

                // closing this screen
                finish();
            } else {
                // failed to create product
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;    
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    @Override
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once done
        pDialog.dismiss();
    }
}
据我所知,脚本文件本身可以工作——此外,根据我所知,程序从不执行脚本


如果有人能帮我,我会非常感激的!我知道你们都是很忙的人,所以非常感谢你们抽出一天的时间来发表想法:)

线索在抛出的异常中:

原因:java.lang.IllegalStateException:目标主机不能为 null,或在参数中设置。scheme=null,host=null,
path=localhost/android\u connect/sqlconfig/create\u user.php


我猜这是一个编码问题,您是否在URL的开头正确地包含了“http://”,是否已将您请求的URL打印到LogCat以确保它看起来正确

线索在抛出的异常中:

原因:java.lang.IllegalStateException:目标主机不能为 null,或在参数中设置。scheme=null,host=null,
path=localhost/android\u connect/sqlconfig/create\u user.php


我猜这是一个编码问题,您是否在URL的开头正确地包含了“http://”,是否已将您请求的URL打印到LogCat以确保它看起来正确

线索在抛出的异常中:

原因:java.lang.IllegalStateException:目标主机不能为 null,或在参数中设置。scheme=null,host=null,
path=localhost/android\u connect/sqlconfig/create\u user.php


我猜这是一个编码问题,您是否在URL的开头正确地包含了“http://”,是否已将您请求的URL打印到LogCat以确保它看起来正确

线索在抛出的异常中:

原因:java.lang.IllegalStateException:目标主机不能为 null,或在参数中设置。scheme=null,host=null,
path=localhost/android\u connect/sqlconfig/create\u user.php



我猜这是一个编码问题,您是否在URL的开头正确地包含了“http://”,是否已将您请求的URL打印到LogCat以确保它看起来正确

url是否指向某个
localhost
对象?是的,这是异步任务失败的原因吗?我已经将url的ip设置为127.0.0.1。连接到localhost wamp服务器是否存在一般性问题?如果您在内置仿真器中进行测试,则应使用10.0.2.2连接到localhost。@polska指的是:--当未设置
INTERNET
权限时,我也看到类似错误。@323go,确切地说,我也看到了与此相关的错误。。实际上,当我尝试user3149699正在尝试的事情时,我的一个问题是没有设置INTERNET权限。url是否指向某个
localhost
东西?是的,这是异步任务失败的原因吗?我已经将url的ip设置为127.0.0.1。连接到localhost wamp服务器是否存在一般性问题?如果您在内置仿真器中进行测试,则应使用10.0.2.2连接到localhost。@polska指的是:--当未设置
INTERNET
权限时,我也看到类似错误。@323go,确切地说,我也看到了与此相关的错误。。实际上,当我尝试user3149699正在尝试的事情时,我的一个问题是没有设置INTERNET权限。url是否指向某个
localhost
东西?是的,这是异步任务失败的原因吗?我已经将url的ip设置为127.0.0.1。连接到localhost wamp服务器是否存在一般性问题?如果您在内置仿真器中进行测试,则应使用10.0.2.2连接到localhost。@polska指的是:--当未设置
INTERNET
权限时,我也看到类似错误。@323go,确切地说,我也看到了与此相关的错误。。实际上,当我尝试user3149699正在尝试的事情时,我的一个问题是没有设置INTERNET权限。url是否指向某个
localhost
东西?是的,这是异步任务失败的原因吗?我已经将url的ip设置为127.0.0.1。连接到localhost wamp服务器是否存在一般性问题?如果您在内置仿真器中进行测试,则应使用10.0.2.2连接到localhost。@polska指的是:--当未设置
INTERNET
权限时,我也看到类似错误。@323go,确切地说,我也看到了与此相关的错误。。事实上,当我尝试与user3149699相同的东西时,我的一个问题是没有设置INTERNET权限。非常好的捕获。我注销了url,你是对的,我没有把http://放在它的前面。之后,我仍然有日志错误,但我感觉好像我离那个问题越来越近了。我没有那个非法移民
public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    // function get JSON from URL
    // by making HTTP POST or GET method
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {

        // Making HTTP request
        try {

            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }           

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
       return jObj;

    }
}
E/AndroidRuntime(1132): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime(1132): Process: com.example.propertypanther, PID: 1132
E/AndroidRuntime(1132): java.lang.RuntimeException: An error occured while executing   
doInBackground()
E/AndroidRuntime(1132):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
E/AndroidRuntime(1132):     at  
 java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
E/AndroidRuntime(1132):     at    
java.util.concurrent.FutureTask.setException(FutureTask.java:222)
E/AndroidRuntime(1132):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
E/AndroidRuntime(1132):     at   
android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
E/AndroidRuntime(1132):     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(1132):     at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(1132):     at java.lang.Thread.run(Thread.java:841)
E/AndroidRuntime(1132): Caused by: java.lang.IllegalStateException: Target host must not
be null, or set in parameters. scheme=null, host=null,    
path=localhost/android_connect/sqlconfig/create_user.php
E/AndroidRuntime(1132):     at   
org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.jav
a:591)
E/AndroidRuntime(1132):     at  
org.apache.http.impl.client.DefaultRequestDirector.execute
(DefaultRequestDirector.java:293)

E/AndroidRuntime(1132):     at
 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)

E/AndroidRuntime(1132):     at    
 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
E/AndroidRuntime(1132):     at 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
E/AndroidRuntime(1132):     at 
com.example.propertypanther.JSONParser.makeHttpRequest(JSONParser.java:51)

E/AndroidRuntime(1132):     at 
com.example.propertypanther.AddUserActivity$CreateNewUser.doInBackground
(AddUserActivity.java:116)

E/AndroidRuntime(1132):     at  
com.example.propertypanther.AddUserActivity$CreateNewUser.doInBackground
(AddUserActivity.java:1)
E/AndroidRuntime(1132):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
E/AndroidRuntime(1132):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(1132):     ... 4 more
I/Choreographer(1132): Skipped 82 frames!  The application may be doing too much work on
its main thread.
I/Choreographer(1132): Skipped 58 frames!  The application may be doing too much work on
its main thread.
E/WindowManager(1132): android.view.WindowLeaked: Activity 
com.example.propertypanther.AddUserActivity has leaked window   
com.android.internal.policy.impl.PhoneWindow$DecorView{b1e3d240 V.E..... R.....ID 0,0- 
729,192} that was originally added here
E/WindowManager(1132):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:348)
E/WindowManager(1132):  at   
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
E/WindowManager(1132):  at  
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
E/WindowManager(1132):  at android.app.Dialog.show(Dialog.java:286)

E/WindowManager(1132):  at 
com.example.propertypanther.AddUserActivity$CreateNewUser.onPreExecute
(AddUserActivity.java:97)

E/WindowManager(1132):  at 
 android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
E/WindowManager(1132):  at android.os.AsyncTask.execute(AsyncTask.java:535)
E/WindowManager(1132):  at   
com.example.propertypanther.AddUserActivity$2.run(AddUserActivity.java:78)
E/WindowManager(1132):  at android.os.Handler.handleCallback(Handler.java:733)
E/WindowManager(1132):  at android.os.Handler.dispatchMessage(Handler.java:95)
E/WindowManager(1132):  at android.os.Looper.loop(Looper.java:136)
E/WindowManager(1132):  at android.app.ActivityThread.main(ActivityThread.java:5017)
E/WindowManager(1132):  at java.lang.reflect.Method.invokeNative(Native Method)
E/WindowManager(1132):  at java.lang.reflect.Method.invoke(Method.java:515)
E/WindowManager(1132):  at  
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/WindowManager(1132):  at   
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/WindowManager(1132):  at dalvik.system.NativeStart.main(Native Method)