Я работаю над проектом, который публикует файл с использованием http-соединения. Я хочу отображать горизонтальный индикатор выполнения со статусом индикатора выполнения во время процесса публикации. Я нашел много примеров того, как делать с загрузкой данных, а не с их публикацией.
Моя функция выглядит так:
protected String doInBackground(String... arg0) {
String id= "lcxclx,";
try{
URL url = new URL("cskcj");
JSONObject postDataParams = new JSONObject();
postDataParams.put(KEY_IMAGE,myarray[0]);
postDataParams.put(KEY_IMAGE2,myarray[1]);
postDataParams.put(KEY_IMAGE3,myarray[2]);
postDataParams.put(KEY_IMAGE4,myarray[3]);
postDataParams.put(KEY_IMAGE5,myarray[4]);
postDataParams.put("id",id);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
}
else {
return new String("false : "+responseCode);
}
}
catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
protected void onProgressUpdate(Integer... values) {
Log.e("Value", "onProgressUpdate - " + (values[0] * 100 / maxProgress) + "%");
}
Это getPostDataString ()
public String getPostDataString(JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext()){
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}