Android上的HTTPPost与HttpUrlConnection POST

Android上的HTTPPost与HttpUrlConnection POST,android,http,httpurlconnection,Android,Http,Httpurlconnection,我正在尝试在我的Android应用程序中从Apache HTTP转移到HttpUrlConnection。我被困住了,我试着到处寻找,但我无法通过它。这就是我正在尝试的 下面是我的HTTP代码: HttpParams timeoutParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(timeoutParams, 60000); HttpConnectionParams.setSoTimeout(tim

我正在尝试在我的Android应用程序中从Apache HTTP转移到HttpUrlConnection。我被困住了,我试着到处寻找,但我无法通过它。这就是我正在尝试的

下面是我的HTTP代码:

HttpParams timeoutParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(timeoutParams, 60000);
HttpConnectionParams.setSoTimeout(timeoutParams, 60000);

DefaultHttpClient httpClient = null;
httpClient = new DefaultHttpClient(timeoutParams);
Cookie podCookie = getPodCookie();
    if (podCookie != null) {
        httpClient.getCookieStore().addCookie(podCookie);
    }
HttpPost postMethod = null;
postMethod.addHeader("Authorization", "<auth-header>");
try {
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    for (Entry<String, String> entry : parameters.entrySet()) {
        nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    }
    String queryString = URLEncodedUtils.format(nvps, HTTP.UTF_8);
    String modUrl = url + "?" + queryString;
    postMethod = new HttpPost(modUrl);

StringEntity entity = new StringEntity(<String JSON to send>, HTTP.UTF_8);
postMethod.setEntity(entity);
postMethod.setHeader("Content-type", "application/json");
HttpResponse reply = httpClient.execute(postMethod);
并向writer添加以下行,如下所示:

URL url1 = new URL(baseUrl);
writer.write(modUrl)
当我这样做时,我得到一个
500内部服务器错误

在这两种情况下,我都会在
InputStream
行上得到一个
IOException
,它是一个
FileNotFoundException


关于如何解决这个问题,您有什么想法吗?

您应该从成功的httpclient调用中转储头,以便准确地知道OK请求发送的是什么头

不清楚如何设置“授权”标题

不清楚在“StringEntity”中设置了什么Json值

在尝试使用HttpUrlConnection之前,您应该确切地知道好的调用(httpClient调用或curlcli调用)中发送的是什么。然后在那里设置相同的头,将相同的JSON写入连接的outputStream,您应该会得到相同的结果

两个标头的Curl表达式以及Curl.-d中的JSON实体切换值

curl -v -X POST \
  -H "Content-type: application/json" \
  -H "Authorization: aValueforAuth" \
  -d '{"score":1337,"playerName":"Sean Plott",...}' \
  http://domain/path?parm1=$urlEncodedVal-1&parm2=$urlEncodedVal-2
curl -v -X POST \
  -H "Content-type: application/json" \
  -H "Authorization: aValueforAuth" \
  -d '{"score":1337,"playerName":"Sean Plott",...}' \
  http://domain/path?parm1=$urlEncodedVal-1&parm2=$urlEncodedVal-2