【发布时间】:2021-06-26 03:43:49
【问题描述】:
我是 socket.io 的新手 我已经尝试了我遇到的所有事情,但使用 connected() 函数时仍然是错误的。
我已经检查了我同时拥有的权限:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我也用过:android:usesCleartextTraffic="true"
这是我的代码:
public class LoginFragment extends Fragment {
FragmentLoginBinding binding;
private NavController controller;
private Socket socket;
{
try {
socket = IO.socket(TimeAndData.getSocketURL());// it's something like this "http://xxx.xxx.xxx.xxx:xxxx"
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
controller = Navigation.getInstance().getController();
binding = FragmentLoginBinding.inflate(getLayoutInflater(),container,false);
socket.connect();
binding.loginBtn.setOnClickListener(v -> {
if(!binding.etUsername.getText().toString().isEmpty()) {
if(!binding.etPass.getText().toString().isEmpty()) {
binding.loginBtn.setClickable(false);
submit();
}
}
});
return binding.getRoot();
}
private void submit() {
binding.progressBar.setVisibility(View.VISIBLE);
RequestQueue rq = Volley.newRequestQueue(requireContext());
StringRequest jor = new StringRequest(Request.Method.POST, TimeAndData.getLoginURL(), responseStr -> {
JsonObject object = new Gson().fromJson(responseStr, JsonObject.class);
binding.progressBar.setVisibility(View.GONE);
if(object.get("status").getAsInt()==200) {
TimeAndData.setDisplayName(object.get("displayName").getAsString());
TimeAndData.setBalance(object.get("balance").getAsString());
TimeAndData.setFullName(object.get("fullName").getAsString());
TimeAndData.setUserId(object.get("userId").getAsString());
TimeAndData.setUserName(object.get("userName").getAsString());
initSocket(object.get("userId").getAsString());
//controller.navigate(R.id.navigation_choice);
}else if(object.get("status").getAsInt()==401){
Toast toast = Toast.makeText(requireContext(), object.get("msg").getAsString(),Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP,0,0);
toast.show();
binding.progressBar.setVisibility(View.GONE);
binding.loginBtn.setClickable(true);
}else {
Toast toast = Toast.makeText(requireContext(), "Internal Server Error",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP,0,0);
toast.show();
binding.progressBar.setVisibility(View.GONE);
binding.loginBtn.setClickable(true);
}
}, error -> Toast.makeText(getContext(), error.getMessage(), Toast.LENGTH_SHORT).show()){
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded";
}
@Override
protected Map<String, String> getParams()
{
Map<String, String> params = new HashMap<>();
params.put("userName", binding.etUsername.getText().toString());
params.put("password", binding.etPass.getText().toString());
return params;
}
};
rq.add(jor);
}
private void initSocket(String agent_id) {
Toast toast = Toast.makeText(requireContext(), String.valueOf(socket.connected()),Toast.LENGTH_SHORT);//shows false
toast.setGravity(Gravity.TOP,0,0);
toast.show();
}
我在这里做错了什么?我被困在这里,我明天有截止日期
【问题讨论】:
标签: java android sockets websocket socket.io