Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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
如何在Android中向Web服务器发送数据?_Android_Webserver - Fatal编程技术网

如何在Android中向Web服务器发送数据?

如何在Android中向Web服务器发送数据?,android,webserver,Android,Webserver,我正在尝试在Android Studio中发送数据。我正在做一个登录功能。所以我需要将数据发送到Web服务器。我已经创建了一个Web服务器,但由于以下错误,我无法创建: 原因:android.os.NetworkOnMainThreadException 我认为错误是指向这一行的: InputStream is = conn.getInputStream(); 我已经挣扎了三天了。请帮忙 public class MainActivity extends AppCompatActivi

我正在尝试在Android Studio中发送数据。我正在做一个登录功能。所以我需要将数据发送到Web服务器。我已经创建了一个Web服务器,但由于以下错误,我无法创建:

原因:android.os.NetworkOnMainThreadException

我认为错误是指向这一行的:

InputStream is = conn.getInputStream();
我已经挣扎了三天了。请帮忙

    public class MainActivity extends AppCompatActivity {
        EditText id;
        EditText pass;
        String custid;
        String password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        id=(EditText)findViewById(R.id.idtext);
        pass=(EditText)findViewById(R.id.passtext);

    }

    public void ButtonClick(View view){

        custid=id.getText().toString();
        password=pass.getText().toString();
        Toast.makeText(this, "버튼접근."+custid+password, Toast.LENGTH_SHORT).show();
        Properties prop = new Properties();
        prop.setProperty("custid", custid);
        prop.setProperty("password", password);
        String encodedString = encodeString(prop);

        URL url = null;
        try {
            url = new URL ("http://192.168.56.1:9999/SEBank/customer/login.action" + "?" + encodedString);
            URLConnection conn = url.openConnection();
            conn.setUseCaches(false);
            InputStream is = conn.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            char[] buff = new char[512];
            int len = -1;

            while( (len = br.read(buff)) != -1) {
                System.out.print(new String(buff, 0, len));
            }

            br.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

    }


    public String encodeString(Properties params) {
        StringBuffer sb = new StringBuffer(256);
        Enumeration names = params.propertyNames();

        while (names.hasMoreElements()) {
            String name = (String) names.nextElement();
            String value = params.getProperty(name);
            sb.append(URLEncoder.encode(name) + "=" + URLEncoder.encode(value) );

            if (names.hasMoreElements()) sb.append("&");
        }
        return sb.toString();
    }

}
如果错误为“android.os.NetworkOnMainThreadException…”,请尝试用以下代码片段括起代码:

AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            InputStream is = conn.getInputStream();
            // other code
        }
    });

你可以把这个写在你的代码里

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

但我认为最好的解决方案是使用异步任务或截击

谢谢!!错误消息已更改!原因:android.os.NetworkOnMainThreadException….:(..…指向同一行的InputStream是=conn.getInputStream();非常感谢David!我将找到一种使用AsyncTasks的方法。我现在无法使用该代码。现在我正在尝试将“URLConnection conn Object”发送到Runnable()匿名对象。!你的评论对我很有帮助!!哇,非常感谢你,我成功了,谢谢你。我会找到一种使用异步任务的方法!谢谢