I'm writing an application in which both the server-side and client codes are written by me, I'm not using any frameworks (e.g Spring Boot etc). when I send an http GET request from my android device to my laptop (which runs the server code), the request method that I had already explicitly set using setRequestMethod("GET") becomes post, I also checked it using wireshark and it also shows that the request is a POST not a get.
The code for sending the requests from android device:
public class ClientHttpUtils {
    private final static Gson GSON = GsonUtils.getInstance();
    private static final ExecutorService executorService = Executors.newFixedThreadPool(4);
public static <T> void get(
            String path,
            Map<String, String> query,
            Class<T> contentType,
            RequestErrorCallback onError,
            RequestSuccessCallback<T> onSuccess
    ) {
       execute("GET", path, null, query, null, contentType, onError, onSuccess);
    }
private static <T> void execute(
            String method,
            String path,
            Serializable data,
            Map<String, String> query,
            Headers headers,
            Class<T> contentType,
            RequestErrorCallback onError,
            RequestSuccessCallback<T> onSuccess
    ) {
        executorService.submit(()-> {
            try {
                ResponseModel<T> responseModel = executeRequest(method, path, data, query, headers, contentType);
                if (responseModel != null) {
                    onSuccess.onRequestSuccess(responseModel);
                } else {
                    onError.onRequestError(new Exception("Request failed"));
                }
            } catch (Exception e) {
                onError.onRequestError(e);
            }
        });
    }
private static <T> ResponseModel<T> executeRequest(
            String method,
            String path,
            Serializable data,
            Map<String, String> query,
            Headers headers,
            Class<T> contentType
    ) throws IOException {
        ResponseModel<T> responseModel = null;
        URL url = new URL(API.BASE_URL + path + mapToQuery(query));
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod(method);
        conn.setDoOutput(true);
        if(headers != null) {
            for (String header: headers.keySet()){
                conn.setRequestProperty(header, String.join(",", headers.get(header)));
            }
        }
        if (data != null && method.equals("POST")) {
            byte[] bytes = SerializationUtils.serialize(data);
            conn.setRequestProperty("Content-Type", "application/octet-stream");
            conn.setRequestProperty("Content-Length", String.valueOf(bytes.length));
            conn.getOutputStream().write(bytes);
        } else {
            conn.setRequestProperty("Content-Type", "application/json");
        }
        if(conn.getResponseCode() == StatusCode.SUCCESS){
            responseModel = GSON.fromJson(
                    new InputStreamReader(conn.getInputStream()),
                    TypeToken.getParameterized(ResponseModel.class, contentType).getType());
        }
        else {
            responseModel = GSON.fromJson(
                    new InputStreamReader(conn.getErrorStream()),
                    TypeToken.getParameterized(ResponseModel.class, contentType).getType());
        }
        return responseModel;
    }
    private static String mapToQuery(Map<String, String> query) {
        StringBuilder queryStr = new StringBuilder();
        if (query != null) {
            queryStr = new StringBuilder("?");
            for (Map.Entry<String, String> entry : query.entrySet()) {
                String entity = entry.getValue();
                try {
                    entity = URLEncoder.encode(entity, StandardCharsets.UTF_8.toString());
                } catch (Exception ignore) {
                }
                queryStr.append(entry.getKey()).append("=").append(entity).append("&");
            }
            queryStr = new StringBuilder(queryStr.substring(0, queryStr.length() - 1));
        }
        return queryStr.toString();
    }
}
the ResponseModel<T> class:
public class ResponseModel<T> {
    private final int status;
    private final boolean success;
    private final String message;
    private final T content;
    public ResponseModel(int status, boolean success, String message, T content) {
        this.status = status;
        this.success = success;
        this.message = message;
        this.content = content;
    }
    public boolean isSuccess() {
        return success;
    }
    public int getStatus() {
        return status;
    }
    public String getMessage() {
        return message;
    }
    public T get() {
        return content;
    }
}
also this is the code that creates my server:
httpServer = HttpServer.create(new InetSocketAddress("192.168.1.X",API.PORT), 0);
and the endpoint for performing sign-in is /auth/sign-in/.
if needed i can post a captured request using wireshark too.
if any change is needed in the format of my question or anything I would do it quickly just say it in comments.
thanks everyone in advance.
I have already read this post on SO but adding a slash to my request URI (e.g converting /auth/sign-in?username=something... to /auth/sign-in/?username=something...) niether adding one to the end of my request could fix my problem.
on my server side code i have a HttpServer object and I couldn't find anything like allowNullPathInfo() as said in the SO post I shared.
here are my codes for sending and handling the requests.
