JAVA: Restfull web service not passing parameter correctly

Snox

I am trying to create a simple rest service, using spring mvc. Everything is working fine except for one method!

I want to pass a signature(using a private key), encoded in Base64 (using bouncy castle encoder) as a parameter so i can validate it in the server side. The problem is, the signature is not getting to the server correctly!

My server method:

@RequestMapping("/indirectAcess")
public @ResponseBody byte[] getResource(
        @RequestParam(value="id", required=true) String idString,
        @RequestParam(value="url", required=true) String url, 
        @RequestParam(value="sig", required=true) byte[] sig){

    try{
        int id = Integer.parseInt(idString);
        if(IndirectAccessValidate(id, url, sig)){
            return "HERE IS YOUR RESOURCE".getBytes();
        }
        return null;
    } catch(Exception e){
        return "ERROR".getBytes();
    }

}

My client method:

private static void indirectAccess(Scanner in){
    System.out.print("URL: ");
    String url = in.nextLine();
    Teste finalUrl = client.generateIndirectAccess(url);
    byte[] response = rest.getForObject(indirect, byte[].class, finalUrl.getId(), finalUrl.getUrl(), finalUrl.getSig());
    System.out.println(new String(response));
}

I've tried to debug it and the server is receiving the ID and URL correctly, but not the signature (its just some kind of garbage).

Can anyone please help me? Thank you

Snox

After a while i solved it!

I still don't know why but, i had to pass the signature as Base64.encodeBase64URLSafeString(finalUrl.getSig()

and decoded it as Base64.decodeBase64(sig)

Server

    @RequestMapping("/indirectAcess")
    public @ResponseBody byte[] getResource(
            @RequestParam(value="id", required=true) String idString,
            @RequestParam(value="url", required=true) String url, 
            @RequestParam(value="sig", required=true) String sig){

        try{
            int id = Integer.parseInt(idString);
            if(IndirectAccessValidate(id, url, Base64.decodeBase64(sig))){
                return "HERE IS YOUR RESOURCE".getBytes();
            }
            return null;
        } catch(Exception e){
            return "ERROR".getBytes();
        }

    }

Client

private static void indirectAccess(Scanner in){
    System.out.print("URL: ");
    String url = in.nextLine();
    Teste finalUrl = client.generateIndirectAccess(url);
    byte[] response = rest.getForObject(indirect, byte[].class, finalUrl.getId(), finalUrl.getUrl(), Base64.encodeBase64URLSafeString(finalUrl.getSig()));
    System.out.println(new String(response));
}

I would appreciate if someone could explain me why this happened, because i still can find a reason for... Thank you

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

JAVA: Restfull web service not passing parameter correctly

From Dev

Web Service Passing parameter Class

From Dev

Trouble passing datetime parameter to web service, in GET

From Dev

Passing a file as a parameter for a Spring web service via Postman

From Dev

Javascript boolean parameter not passing correctly

From Dev

How to sent data with restfull web service in C#

From Dev

RESTfull web service display info on page, using visual studio 2015

From Dev

Passing a parameter to an ionic angular service

From Dev

Passing a parameter in url Restful service?

From Dev

Passing a parameter to an ionic angular service

From Java

Passing function as a parameter in java

From Dev

Passing an object as a parameter in Java

From Dev

passing LotusScript parameter to Java

From Dev

Parameter passing in Java

From Dev

Python and Java parameter passing

From Dev

JSON Parameter for Web Service

From Dev

Passing date to ASMX web service

From Dev

Passing Username and Password to Web Service

From Dev

Passing a password to a web service and storing it

From Dev

Passing an unsigned char array as a parameter - array not correctly passing

From Dev

Integer field in a type does not parse request parameter in java web service

From Dev

How to Implement URL parameter service correctly

From Dev

Passing IEnumerable<int> as parameter to WCF service

From Dev

Delphi: Passing a parameter to a running service to act on

From Dev

$location service not passing URL Parameter to Controller

From Dev

Using final parameter correctly in Java

From Dev

Java Passing in Type as Function Parameter

From Dev

Java - Passing a method through a parameter

From Dev

passing static method as parameter in Java

Related Related

HotTag

Archive