Frage

i've got a problem do a http post on android with german "umlaute" äöü. I am passing a json object to the method below and execute the returned ClientResource with post and the request entity in the returned client response. When I want to post something like { "foo":"bär" } the HttpClient sends something like { "foo":"b√§r" }.

Don't know why. What am I doing wrong.

public static ClientResource newPostRequest(Context context, String urn,
        JSONObject form) throws MissingAccessTokenException {

    ClientResource resource = new ClientResource(uri + urn);

    StringRepresentation sr = new StringRepresentation(form.toString());
    sr.setMediaType(MediaType.APPLICATION_JSON);

    resource.getRequest().setEntity(sr);

    return resource;
}

Update

I used the default android http client (which is a apache http client I believe) and got the same error. So the problem might be located here. I try to implement another json parser (currently gson) and (if possible) another http client. Be back later...

Update

Gson is not the problem. I added a json String to the StringRepresentation and nothing changed.

ANSWER

Well that's an odd one. Maybe someone can clear this for me. I always asked myself, why √§ where used and I figured out that translating the utf-8 ä leads to √§. Obviously my android phone did not use macroman, but my mac did. I therefor changed the text file encoding in eclipse, restarted eclipse and the tomcat server and it worked. Still the TCP/IP Monitor in eclipse uses mac roman which looks still wrong. It was thereby a problem with my server, not with the restlet client on android. I just couldn't see it because the TCP/IP Monitor encoded everything in macroman.

War es hilfreich?

Lösung

did you try calling setCharacterSet(...) on your StringRepresentation? e.g.,

StringRepresentation sr = new StringRepresentation(form.toString());
sr.setCharacterSet(CharacterSet.UTF_8);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top