【发布时间】:2015-06-22 11:07:14
【问题描述】:
在我的应用程序中,我需要使用 HttpPut 方法将一些参数发布到服务器。所以为此我检查了基本身份验证技术并成功地以这种方式获得相同的结果。但是当我尝试用 Json Volley 实现相同的功能时,我无法得到结果。每次它都抛出服务器错误。
这是我使用 Asynctask 通过基本身份验证的代码::
@Override
protected Void doInBackground( String... params )
{
// TODO Auto-generated method stub
try
{
HttpPut request = new HttpPut( params[0] );
Log.d("debug", "Posting URL" + params[0]);
String creds = String.format( "%s:%s",
"user123",
"abcd" );
String auth = "Basic " + Base64.encodeToString( creds.getBytes(),
Base64.NO_WRAP );
request.setHeader( "Authorization",
auth );
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("id", "409"));
urlParameters.add(new BasicNameValuePair("parent_id", "0"));
urlParameters.add(new BasicNameValuePair("content", "I am android developer"));
urlParameters.add(new BasicNameValuePair("email", "email@example.com"));
urlParameters.add(new BasicNameValuePair("username", "King Of Masses"));
request.setEntity(new UrlEncodedFormEntity(urlParameters));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute( request );
HttpEntity Entity = response.getEntity();
String jsondata = EntityUtils.toString( Entity );
Log.d( "debug",
"Response Code:: " + response.getStatusLine().getStatusCode() );
Log.d( "debug",
"Json Data in Asynctask:: " + jsondata );
JSONObject ljsJsonObject=new JSONObject(jsondata);
Log.d( "debug",
"Json Object Data:: " + ljsJsonObject.toString() );
}
catch( ClientProtocolException e )
{
Log.d( "debug",
"Exception" + e.toString() );
e.printStackTrace();
}
catch( IOException e )
{
Log.d( "debug",
"Exception" + e.toString() );
e.printStackTrace();
}
catch( Exception e )
{
e.printStackTrace();
}
return null;
}
因此,通过上述方式,我得到了我期望的结果.. 但我无法用 VolleyJson 实现相同的结果.. 任何人都可以指导我如何实现这一点.. 我尝试了太多方法,例如 (getBody() , getParams()) 但不幸的是对我没有任何帮助..
任何帮助将不胜感激..谢谢
【问题讨论】:
标签: android http-headers android-volley basic-authentication put