gpt4 book ai didi

java - 奇怪的 httpPost 行为(可能与 json、auth、代理相关)GET 有效,POST 有效,但没有代理就不行(部分解决)

转载 作者:行者123 更新时间:2023-12-01 15:56:26 30 4
gpt4 key购买 nike

我编写了一个 REST WCF RIA Silverlight 4.0 兼容服务,我可以从 javascript + jQuery.1.4.2.js + JSON2.js(当然,还可以从 .NET 4.0 应用程序)成功访问该服务

基本上,我在 Android Activity 中所做的是:

            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 无效...

有什么想法吗?

奥斯卡奖萨卢多斯。

更新

这是在没有代理的情况下执行请求之前

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)

最佳答案

由于与协议(protocol)相关的问题,我开始在服务器中测试多种认证方案。似乎自 2008 年以来,java 和 apache 都不支持在新服务器中实现的新 NTLMv2。

我发现(并丢失了)一个网站,其中指出使用 JCIFS 来带来差距。但事情并不是包含jar那么简单,还必须写一部分代码,而所有的支持都是不确定的,不能保证的。用实际行话来说,这意味着“仅使用基本身份验证”,但使用大写字母......

顺便说一句,我找到了它的工作方式。只需添加以下内容:

httpClient.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);

戴夫,我欠你一个大人情!非常感谢大家阅读该帖子!

奥斯卡奖萨卢多斯。

关于java - 奇怪的 httpPost 行为(可能与 json、auth、代理相关)GET 有效,POST 有效,但没有代理就不行(部分解决),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970353/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com