I write a REST WCF RIA Silverlight 4.0 compatible service, that I can access sucessfully from a javascript + jQuery.1.4.2.js + JSON2.js (and, of course, from .NET 4.0 applications)
Basically, what I'm doing in my Android activity is:
HttpPost request = new HttpPost(SERVICE_URI + "/SubmitChanges");
request.setHeader("Accept", "application/json; charset=utf-8");
request.setHeader("Content-type", "application/json; charset=utf-8");
// Build JSON string
JSONStringer myTable = new JSONStringer()
.object()
.key("changeSet")
.array()
.object()
.key("Id").value(0)
.key("Entity")
.object()
.key("__type").value("MyTable:#MyServiceApp.Web")
.key("ID").value(21)
.endObject()
.key("Operation").value(4)
.endObject()
.endArray()
.endObject();
Log.d("WebInvoke", "MyTable : " + myTable.toString());
StringEntity entity = new StringEntity(myTable.toString());
// entity.setContentType("application/json; charset=utf-8");
// entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json; charset=utf-8"));
request.setEntity(entity);
Log.d("WebInvoke", "Entity : " + entity.toString());
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(new AuthScope(null,-1), new UsernamePasswordCredentials("myuser","mypassword"));
// HttpClientParams myParam = (HttpClientParams) httpClient.getParams();
// Log.d("WebInvoke", "Entity : " + myParam.toString());
HttpResponse response = httpClient.execute(request);
When turned to Android app, I noted that I cannot do PUT's operations (GETs worked OK). They returned error 400 - Bad request As it worked OK on js, I used fiddler2 to see what's happend. When I setup the emulator to work throught fiddler proxy, suddenly, the request has turned OK. Then I tryed again without proxy, and it returned to error 400. I tryed also uploading the apk to my Galaxy S and connecting through web. Again, GETs works, but PUTs don't...
Any ideas?
Saludos, OSCAR.
UPDATE
This is previous to execute request without proxy
request HttpPost (id=830085521536)
aborted false
abortLock ReentrantLock (id=830085616656)
connRequest null
entity StringEntity (id=830085531688)
headergroup HeaderGroup (id=830085644864)
params null
releaseTrigger null
uri URI (id=830085878840)
httpClient DefaultHttpClient (id=830085612544)
connManager null
cookieStore BasicCookieStore (id=830085604904)
credsProvider BasicCredentialsProvider (id=830085612624)
defaultParams null
httpProcessor null
keepAliveStrategy null
log Jdk14Logger (id=830085596488)
proxyAuthHandler null
redirectHandler null
requestExec null
retryHandler null
reuseStrategy null
routePlanner null
supportedAuthSchemes null
supportedCookieSpecs null
targetAuthHandler null
userTokenHandler null
This is posterior to execute request without proxy
request HttpPost (id=830085521536)
aborted false
abortLock ReentrantLock (id=830085616656)
connRequest null
entity StringEntity (id=830085531688)
headergroup HeaderGroup (id=830085644864)
params BasicHttpParams (id=830085486480)
releaseTrigger SingleClientConnManager$ConnAdapter (id=830085855888)
uri URI (id=830085878840)
httpClient DefaultHttpClient (id=830085612544)
connManager SingleClientConnManager (id=830085927648)
cookieStore BasicCookieStore (id=830085604904)
credsProvider BasicCredentialsProvider (id=830085612624)
defaultParams BasicHttpParams (id=830085575968)
httpProcessor BasicHttpProcessor (id=830085617496)
keepAliveStrategy DefaultConnectionKeepAliveStrategy (id=830085544576)
log Jdk14Logger (id=830085596488)
proxyAuthHandler DefaultProxyAuthenticationHandler (id=830085951384)
redirectHandler DefaultRedirectHandler (id=830085524448)
requestExec HttpRequestExecutor (id=830085525992)
retryHandler DefaultHttpRequestRetryHandler (id=830085583064)
reuseStrategy DefaultConnectionReuseStrategy (id=830085882544)
routePlanner DefaultHttpRoutePlanner (id=830085880096)
supportedAuthSchemes AuthSchemeRegistry (id=830085650400)
supportedCookieSpecs CookieSpecRegistry (id=830085516320)
targetAuthHandler DefaultTargetAuthenticationHandler (id=830085583264)
userTokenHandler DefaultUserTokenHandler (id=830085486432)
response BasicHttpResponse (id=830085980112)
entity BasicManagedEntity (id=830085983552)
headergroup HeaderGroup (id=830085625184)
locale Locale (id=830085944016)
params ClientParamsStack (id=830085486448)
reasonCatalog EnglishReasonPhraseCatalog (id=830004383520)
statusline BasicStatusLine (id=830085625160)
This is previous to execute request with proxy
request HttpPost (id=830085966120)
aborted false
abortLock ReentrantLock (id=830085966520)
connRequest null
entity StringEntity (id=830085971592)
headergroup HeaderGroup (id=830085966392)
params null
releaseTrigger null
uri URI (id=830085966568)
httpClient DefaultHttpClient (id=830085973896)
connManager null
cookieStore BasicCookieStore (id=830085974504)
credsProvider BasicCredentialsProvider (id=830085974144)
defaultParams null
httpProcessor null
keepAliveStrategy null
log Jdk14Logger (id=830085974120)
proxyAuthHandler null
redirectHandler null
requestExec null
retryHandler null
reuseStrategy null
routePlanner null
supportedAuthSchemes null
supportedCookieSpecs null
targetAuthHandler null
userTokenHandler null
This is posterior to execute request with proxy
request HttpPost (id=830085966120)
aborted false
abortLock ReentrantLock (id=830085966520)
connRequest null
entity StringEntity (id=830085971592)
headergroup HeaderGroup (id=830085966392)
params BasicHttpParams (id=830085980824)
releaseTrigger SingleClientConnManager$ConnAdapter (id=830085981992)
uri URI (id=830085966568)
httpClient DefaultHttpClient (id=830085973896)
connManager SingleClientConnManager (id=830085978144)
cookieStore BasicCookieStore (id=830085974504)
credsProvider BasicCredentialsProvider (id=830085974144)
defaultParams BasicHttpParams (id=830085977232)
httpProcessor BasicHttpProcessor (id=830085978848)
keepAliveStrategy DefaultConnectionKeepAliveStrategy (id=830085978816)
log Jdk14Logger (id=830085974120)
proxyAuthHandler DefaultProxyAuthenticationHandler (id=830085980560)
redirectHandler DefaultRedirectHandler (id=830085980152)
requestExec HttpRequestExecutor (id=830085976912)
retryHandler DefaultHttpRequestRetryHandler (id=830085980128)
reuseStrategy DefaultConnectionReuseStrategy (id=830085978800)
routePlanner DefaultHttpRoutePlanner (id=830085978832)
supportedAuthSchemes AuthSchemeRegistry (id=830085975792)
supportedCookieSpecs CookieSpecRegistry (id=830085976320)
targetAuthHandler DefaultTargetAuthenticationHandler (id=830085980344)
userTokenHandler DefaultUserTokenHandler (id=830085980776)
response BasicHttpResponse (id=830085927240)
entity BasicManagedEntity (id=830085863688)
headergroup HeaderGroup (id=830085944256)
locale Locale (id=830085944272)
params ClientParamsStack (id=830085980792)
reasonCatalog EnglishReasonPhraseCatalog (id=830004383520)
statusline BasicStatusLine (id=830085927216)