Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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注册数据库用户_Java_Android_Json_Httpclient_Httpresponse - Fatal编程技术网

Java Android注册数据库用户

Java Android注册数据库用户,java,android,json,httpclient,httpresponse,Java,Android,Json,Httpclient,Httpresponse,我已经得到了一个注册api,可以使用它将用户注册到后端 但它似乎不起作用。需要帮助。谢谢 下面是注册api,后面是代码 参数:用户名、电子邮件、pwd(密码)、cname(公司名称)、cmobile(公司手机号码)、cwebsite(公司网站)、cfbaddress(公司的fb地址)、cbssid(公司的bssid) 不推荐使用NameValuePairs和HttpClient。并且不能在主线程中执行联网操作。要执行post请求,可以使用以下代码 public class RegisterUs

我已经得到了一个注册api,可以使用它将用户注册到后端 但它似乎不起作用。需要帮助。谢谢

下面是注册api,后面是代码

参数:用户名、电子邮件、pwd(密码)、cname(公司名称)、cmobile(公司手机号码)、cwebsite(公司网站)、cfbaddress(公司的fb地址)、cbssid(公司的bssid)


不推荐使用NameValuePairs和HttpClient。并且不能在主线程中执行联网操作。要执行post请求,可以使用以下代码

public class RegisterUserClass {

public String sendPostRequest(String requestURL,
                               HashMap<String, String> postDataParams) {

    URL url;
    String response = "";
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);


        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode=conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
            response = br.readLine();
        }
        else {
            response="Error Registering";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for(Map.Entry<String, String> entry : params.entrySet()){
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}
}
公共类注册表UserClass{
公共字符串sendPostRequest(字符串请求URL,
HashMap postDataParams){
网址;
字符串响应=”;
试一试{
url=新url(请求url);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置读取超时(15000);
连接设置连接超时(15000);
conn.setRequestMethod(“POST”);
conn.setDoInput(真);
连接设置输出(真);
OutputStream os=conn.getOutputStream();
BufferedWriter=新的BufferedWriter(
新的OutputStreamWriter(操作系统,“UTF-8”);
write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if(responseCode==HttpsURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
response=br.readLine();
}
否则{
response=“注册错误”;
}
}捕获(例外e){
e、 printStackTrace();
}
返回响应;
}
私有字符串getPostDataString(HashMap参数)引发UnsupportedEncodingException{
StringBuilder结果=新建StringBuilder();
布尔值优先=真;
对于(Map.Entry:params.entrySet()){
如果(第一)
第一个=假;
其他的
结果。追加(&);
append(URLEncoder.encode(entry.getKey(),“UTF-8”);
结果。追加(“=”);
append(URLEncoder.encode(entry.getValue(),“UTF-8”);
}
返回result.toString();
}
}
现在您只需从AsyncTask调用sendPostRequest方法

private void register(String name, String username, String password, String email) {
    class RegisterUser extends AsyncTask<String, Void, String>{
        ProgressDialog loading;
        RegisterUserClass ruc = new RegisterUserClass();


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(MainActivity.this, "Please Wait",null, true, true);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
        }

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

            HashMap<String, String> data = new HashMap<String,String>();
            data.put("name",params[0]);
            data.put("username",params[1]);
            data.put("password",params[2]);
            data.put("email",params[3]);

            String result = ruc.sendPostRequest(REGISTER_URL,data);

            return  result;
        }
    }

    RegisterUser ru = new RegisterUser();
    ru.execute(name,username,password,email);
}
private void register(字符串名称、字符串用户名、字符串密码、字符串电子邮件){
类注册器扩展异步任务{
对话加载;
RegisterUserClass ruc=新的RegisterUserClass();
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loading=ProgressDialog.show(MainActivity.this,“请稍候”,null,true,true);
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
loading.dispose();
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
HashMap数据=新的HashMap();
data.put(“名称”,参数[0]);
data.put(“用户名”,参数[1]);
data.put(“密码”,参数[2]);
数据输入(“电子邮件”,参数[3]);
字符串结果=ruc.sendPostRequest(寄存器URL,数据);
返回结果;
}
}
RegisterUser ru=新的RegisterUser();
执行(名称、用户名、密码、电子邮件);
}

来源:

请发布日志。这可能是由于“NetworkOnMainThreadException”。因为在您的代码中,网络操作是从主线程执行的。

错误是什么?您可以发布logcat或服务器端错误吗?代码只执行到Log.d(“error”,httppost.getEntity().toString());非常感谢你。您是否可以指定请求url从链接i postedSend中表示的字符串,将处理数据库操作的脚本url作为字符串标记作为已应答,如果您得到应答,则添加logcat。是,这是networkonMainThreadException。谢谢解决方法是什么?您可以作为异步任务执行该操作。请通过链接。
public class RegisterUserClass {

public String sendPostRequest(String requestURL,
                               HashMap<String, String> postDataParams) {

    URL url;
    String response = "";
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);


        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode=conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
            response = br.readLine();
        }
        else {
            response="Error Registering";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for(Map.Entry<String, String> entry : params.entrySet()){
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}
}
private void register(String name, String username, String password, String email) {
    class RegisterUser extends AsyncTask<String, Void, String>{
        ProgressDialog loading;
        RegisterUserClass ruc = new RegisterUserClass();


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(MainActivity.this, "Please Wait",null, true, true);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
        }

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

            HashMap<String, String> data = new HashMap<String,String>();
            data.put("name",params[0]);
            data.put("username",params[1]);
            data.put("password",params[2]);
            data.put("email",params[3]);

            String result = ruc.sendPostRequest(REGISTER_URL,data);

            return  result;
        }
    }

    RegisterUser ru = new RegisterUser();
    ru.execute(name,username,password,email);
}