Я пишу REST WCF RIA Silverlight 4.0-совместимую службу, к которой я могу успешно обращаться из javascript + jQuery.1.4.2.js + JSON2.js (и, конечно, из приложений .NET 4.0)
В основном то, что я делаю в своей активности Android:
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);
Когда я обратился к приложению Android, я заметил, что не могу выполнять операции PUT (GET работает нормально). Они вернули ошибку 400 - Плохой запрос
На js все работало нормально, я использовал fiddler2, чтобы увидеть, что произошло. Когда я настраивал эмулятор для работы через прокси-сервер Fiddler, неожиданно запрос стал работать нормально. Затем я попытался снова без прокси, и он вернулся к ошибке 400. Я также попытался загрузить apk в Galaxy S и подключиться через Интернет. Опять же, GET работает, но PUT не ...
Есть идеи?
Салудос, Оскар.
UPDATE
Это предыдущий запрос на выполнение без прокси
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
Это задняя часть для выполнения запроса без прокси
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)
Это предыдущий запрос на выполнение с прокси
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
Это задняя часть для выполнения запроса с прокси
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)