出现错误java.lang.IllegalArgumentException:意外的url

Himanshu Agnihotri

嗨,我正尝试使用json解析将一些数据发送到服务器,但是活动崩溃了,它导致
java.lang.IllegalArgumentException:意外的url

这是“我的活动代码”,我正在注释出现错误的行。

public class LoginActivity extends AppCompatActivity { **// Showing Error at this LIne**

public Location location;
private Button btnLogin;
private boolean doubleBackToExitPressedOnce = false;
private EditText phoneNo, password;
private CheckBox cbShow, cbRemember;
private NetworkUtil networkUtil;
private SharePrefUtil sharePref;
private LocationInfo locationInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    networkUtil = new NetworkUtil(getApplicationContext());
    sharePref = new SharePrefUtil(getApplicationContext());
    initScreen();

    if (sharePref.getValueFromSharePref("remeberFlag").equalsIgnoreCase("true")) {
        phoneNo.setText(sharePref.getValueFromSharePref("mobileno"));
        password.setText(sharePref.getValueFromSharePref("password"));
        cbRemember.setChecked(true);
    }
}



private void initScreen() {
    LocationLibrary.showDebugOutput(true);
    try {
        LocationLibrary.initialiseLibrary(LoginActivity.this, 60 * 1000, 60 * 1000 * 2, "com.aspeage.jagteraho");

    } catch (UnsupportedOperationException e) {
        Toast.makeText(this, "Device doesn't have any location providers", Toast.LENGTH_LONG).show();
    }

    phoneNo = (EditText) findViewById(R.id.ed_phoneno);
    password = (EditText) findViewById(R.id.ed_password);
    cbRemember = (CheckBox) findViewById(R.id.cbox_rememberme);
    cbRemember.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) sharePref.setValueInSharePref("remeberFlag", "true");
            else sharePref.setValueInSharePref("remeberFlag", "false");
        }
    });

    cbShow = (CheckBox) findViewById(R.id.cbox_showpass);
    cbShow.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            } else {
                password.setInputType(129);
            }
        }
    });
    btnLogin = (Button) findViewById(R.id.btn_login);
    btnLogin.setOnClickListener(new ButtonClick());
}

private class ButtonClick implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_login:
                btnLoginClicked();
                break;
            default:
                break;
        }
    }
}

private void btnLoginClicked() {
    if(phoneNo.getText().toString().trim().equals("admin") && password.getText().toString().trim().equals("admin")) {
        loginService();
    }
    if (validation()) {
        if (cbRemember.isChecked())
            rememberMe(password.getText().toString().trim());
        if (networkUtil.isConnected()) {
            loginService();
        } else {
            new SweetAlertDialog(LoginActivity.this, cn.pedant.SweetAlert.SweetAlertDialog.ERROR_TYPE)
                    .setTitleText("Oops...")
                    .setContentText("No Network Connection")
                    .show();
        }
    }
}

/**
 * save username and password in SharedPreferences.
 *
 * @param //password is key value for storing in SharedPreferences.
 */
public void rememberMe(String password) {
    SharePrefUtil sharePref = new SharePrefUtil(getApplicationContext());
    sharePref.setValueInSharePref("password", password);
}

private boolean validation() {
    int errorCount = 0;
    if (phoneNo.getText().toString().trim().equals("")
            || phoneNo.getText().length() != 10) {
        phoneNo.setError("Enter valid phone number");
        errorCount = errorCount + 1;
        if (errorCount == 1) {
            phoneNo.requestFocus();
        }
    } else {
        phoneNo.setError(null);
    }
    if (password.getText().toString().trim().equals("")
            || password.getText().length() != 12) {
        password.setError("Enter valid password");
        errorCount = errorCount + 1;
        if (errorCount == 1) {
            password.requestFocus();
        }
    } else {
        password.setError(null);
    }
    if (errorCount == 0) {
        return true;
    } else {
        return false;
    }

}

private void batteryTimer(){
    Timer timer = new Timer();
    TimerTask hourlyTask = new TimerTask() {
        @Override
        public void run() {
            if (networkUtil.isConnected()) {
                batteryLevelCheckService(); // **Getting Error at this Line**
            }
            else {
                offlineBatteryStatus();
            }
        }
    };
    timer.scheduleAtFixedRate(hourlyTask, 01, 60000);
}

private void batteryLevelCheckService() {
    OkHttpClient client = new OkHttpClient();
    String requestURL = String.format(getResources().getString(R.string.service_batteryLevelCheckService));

    JSONArray jsonArrayRequest = new JSONArray();
    JSONObject jsonRequest;
    try {
        List<BatteryStatusModel> batStatusOffline = new Select().from(BatteryStatusModel.class).execute();
        if (batStatusOffline.size() > 0) {
            for (BatteryStatusModel batStatusObject : batStatusOffline) {
                jsonRequest = new JSONObject();
                jsonRequest.accumulate("strTime", batStatusObject.batStatTime);
                jsonRequest.accumulate("batteryStatusLat", "" + batStatusObject.battery_lat);
                jsonRequest.accumulate("batteryStatusLog", "" + batStatusObject.battery_lon);
                jsonRequest.accumulate("empAuthKey", sharePref.getValueFromSharePref("authKey"));
                jsonRequest.accumulate("mobno", "" + sharePref.getValueFromSharePref("mobileno"));
                jsonRequest.accumulate("strBatteryStatus", "" + batStatusObject.batteryStatus);
                jsonArrayRequest.put(jsonRequest);
            }
        }

        Intent intent = this.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
        int percent = (level * 100) / scale;

        Date today = Calendar.getInstance().getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
        String time = simpleDateFormat.format(today);

        jsonRequest = new JSONObject();
        jsonRequest.accumulate("strTime", time);
        jsonRequest.accumulate("batteryStatusLat", "" + locationInfo.lastLat);
        jsonRequest.accumulate("batteryStatusLon", "" + locationInfo.lastLong);
        jsonRequest.accumulate("empAuthKey", sharePref.getValueFromSharePref("authKey"));
        jsonRequest.accumulate("mobNo", "" + sharePref.getValueFromSharePref("mobileno"));
        jsonRequest.accumulate("strBatteryStatus", "" + percent);
        jsonArrayRequest.put(jsonRequest);
    } catch (Exception e) {
        e.printStackTrace();
    }

    RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonArrayRequest.toString());
    Request request = new Request.Builder()
            .url(requestURL) // Getting Error at this Line
            .post(body).build();

    client.newCall(request).enqueue(new Callback() {

        @Override
        public void onFailure(Call call, IOException e) {
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                String responseString = response.body().string();
                try {
                    JSONObject jsonResponse = new JSONObject(responseString);
                    String status = jsonResponse.getString("status");
                    String message = jsonResponse.getString("message");
                    Log.d("jagteraho", "response :: status: " + status.toString() + " message: " + message);
                    if (status.equals("success")) {
                        new Delete().from(BatteryStatusModel.class).execute();
                    } else if (status.equals("failure")) {
                    } else if (status.equals("error")) {
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    });
}

这是我的Logcat

java.lang.IllegalArgumentException: unexpected url: >http://192.168.2.20:8080/jagteraho/batteryStatus/save
at okhttp3.Request$Builder.url(Request.java:143)
at com.aspeage.jagteraho.LoginActivity.batteryLevelCheckService(LoginActivity.java:270)
at com.aspeage.jagteraho.LoginActivity.access$600(LoginActivity.java:59)
at com.aspeage.jagteraho.LoginActivity$4.run(LoginActivity.java:216)
at java.util.Timer$TimerImpl.run(Timer.java:284) 

请帮助我提供可能的解决方案,我在Android开发中还很陌生

克诺索斯

您的错误来自OkHttp。

如果搜索错误消息,则可以看到OkHttp生成它的位置:

https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/Request.java#L142

  HttpUrl parsed = HttpUrl.parse(url);
  if (parsed == null) throw new IllegalArgumentException("unexpected url: " + url);
  return url(parsed);

这表示您的网址无效。正如您对问题的评论所指出的那样:>http://192.168.2.20:8080/jagteraho/batteryStatus/save不是有效的URL。

您需要删除>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.illegalArgumentException意外显示

错误:java.lang.IllegalArgumentException:发现意外的类型标记67

出现错误。java.lang.RuntimeException:意外的“ configure”键:“ afterScenario”

错误:java.lang.IllegalArgumentException

尝试运行Junit测试时出现java.lang.IllegalArgumentException错误

为什么值顺序正确时会出现 java.lang.IllegalArgumentException 错误?

获取java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:运行查询后出现意外令牌

获取错误java.lang.IllegalArgumentException

改造错误 - java.lang.IllegalArgumentException

比较器错误 java.lang.IllegalArgumentException

引起原因:java.lang.IllegalArgumentException:baseUrl必须以/:url结尾

java.lang.IllegalArgumentException:带有改型的非法URL

okhttp java.lang.Illegal ArgumentException: 意外的 url

使用 GSON 时出现 java.lang.IllegalArgumentException

Java EE API REST错误:java.lang.IllegalArgumentException

面对 java.lang.IllegalArgumentException

java.lang.IllegalArgumentException onActivityResult

java.lang.IllegalArgumentException:URL“ https:/ my url / api / login /”不包含“ {username}”。(参数1)

java.lang.IllegalArgumentException异常:@url不能与@GET URL被使用(参数#1)

错误-java.lang.IllegalArgumentException:URI方案不是“文件”吗?

PySpark pandas_udfs java.lang.IllegalArgumentException错误

java.lang.IllegalArgumentException:错误引用的类型不是注释类型

InteliJ Play项目导入错误:java.lang.IllegalArgumentException

Spring Sleuth + Zuul = java.lang.IllegalArgumentException: 格式错误的 id

FCM 前台通知 Java.Lang.IllegalArgumentException 错误

错误:java.lang.IllegalArgumentException:选项'basePath'必须是目录

无法运行ALS.train,错误:java.lang.IllegalArgumentException

java.lang.IllegalArgumentException:错误的base-64

引起原因:java.lang.IllegalArgumentException:错误的类:class java.lang.String