Android-如何向接受参数的web服务发布json字符串?
我有一个web服务,它接受两个参数来保存json:fileName和一个json字符串。我需要向这个web服务发布一个json字符串。我尝试了中概述的方法,但似乎不起作用。有什么建议吗Android-如何向接受参数的web服务发布json字符串?,android,json,web-services,Android,Json,Web Services,我有一个web服务,它接受两个参数来保存json:fileName和一个json字符串。我需要向这个web服务发布一个json字符串。我尝试了中概述的方法,但似乎不起作用。有什么建议吗 public void postDataToServer(String url, String jsonStr) throws ClientProtocolException, IOException { int TIMEOUT_MILLISEC = 10000; // = 10 seconds
public void postDataToServer(String url, String jsonStr) throws ClientProtocolException, IOException
{
int TIMEOUT_MILLISEC = 10000; // = 10 seconds
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
httpParams.setParameter("fileName","testFile");
httpParams.setParameter("json",jsonStr);
HttpClient client = new DefaultHttpClient(httpParams);
HttpPost request = new HttpPost(url);
request.setEntity(new ByteArrayEntity(
jsonStr.getBytes("UTF8")));
HttpResponse response = client.execute(request);
}
文件名和json不在httpParams中。它们进入实体。您应该使用HttpEntity,很可能是
有两个BasicNameValuePair,一个用于文件名,一个用于json。这是我的自定义WebServiceHelper类:
public class WebserviceHelper {
private Context c;
public String bytesSent;
private String tempRespo;
public String hitWeb(Context c,String url, String json){
this.c=c;
try {
tempRespo = new hitAsync(url,json).execute().get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return tempRespo;
}
class hitAsync extends AsyncTask<Void, Void , String>
{
private String url;
private String json;
ProgressDialog pDialog;
public hitAsync(String url, String json) {
// TODO Auto-generated constructor stub
this.url = url;
this.json = json;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
pDialog.dismiss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pDialog = new ProgressDialog(c);
pDialog.setMessage("Please Wait...");
pDialog.show();
pDialog.setCancelable(false);
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
try{
HttpPost post = new HttpPost(url);
StringEntity se = new StringEntity( json);
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/*Checking response */
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayBuffer baf = new ByteArrayBuffer(20);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
bytesSent = new String(baf.toByteArray());
}
}
catch(Exception e){
e.printStackTrace();
}
return bytesSent;
}
}
“它似乎不起作用”。这又意味着什么呢?当我试图从服务器检索json时,我得到了一个“json文件未找到”错误。谢谢,这是有效的。下面是示例代码
ws = new WebserviceHelper();
String respo = ws.hitWeb(// ur class context", "// url","//json string");