Note that there are some explanatory texts on larger screens.

plurals
  1. POget and send data to server is slow on wifi, fast on mobile internet.
    text
    copied!<p>I have an async task which fetches a file from my server. it takes long before it starts but when it starts it is fast. on mobile its is done in about 5 seconds while on wifi i can wait for 40seconds+. </p> <p>this is the asynctask: public class ProgressTask extends AsyncTask { @Override</p> <pre><code>protected Void doInBackground(String... params) { // in background for (int i = 0; i &lt; selectedWidgets.size(); i++) { saveWidget(selectedWidgets.get(i)); } } return null; } } </code></pre> <p>so it starts savewidget. savewidget = download file and store it local</p> <p>here is the savewidget:</p> <pre><code>public void saveWidget(int widgetnumber) { try { // set location and name File root = new File(Environment.getExternalStorageDirectory(), "widgets"); jsonPath = root.getAbsolutePath() + "/widget"; File gpxfile = new File(root, "widget" + widgetnumber + ".txt"); if (!gpxfile.exists()) { // if file doesn't excists, get it from the internet HttpParams httpParameters = new BasicHttpParams(); // add extra time to get it before error is thrown HttpConnectionParams.setConnectionTimeout(httpParameters, 0); HttpConnectionParams.setSoTimeout(httpParameters, 0); HttpConnectionParams.setTcpNoDelay(httpParameters, true); DefaultHttpClient httpclient = new DefaultHttpClient( httpParameters); // set everyting to get it from the internet link = "http://somestuff/widget_id=" + widgetnumber; HttpPost httppost = new HttpPost(link); InputStream inputStream = null; String result = null; BufferedReader reader = null; // set response HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); inputStream = entity.getContent(); // read and save it reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e2) { e2.printStackTrace(); } result = sb.toString(); // code is in app if (!root.exists()) { root.mkdirs(); } // write it to new file FileWriter writer = new FileWriter(gpxfile); writer.append(result); writer.flush(); writer.close(); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } </code></pre> <p>anyone who can explain why it needs so much time just to fetch a small over wifi and it goes fast over mobile internet? i'm kinda clueless atm.</p> <p>is this a good way or is there a better?</p> <p>maybe not bad to mention, at some point i use multipartentity in a service to send a video and data to the server. it works but just like this it is slow. once the first video is uploaded it goes fast.</p> <p>multipartentity to send video:</p> <pre><code>public Void SendToServer(String aUrl, String file, String parameters, String uuid, String uploaded, int id) { // set extra settings for upload HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 0); HttpConnectionParams.setSoTimeout(params, 0); HttpConnectionParams.setTcpNoDelay(params, true); params.setParameter(CoreProtocolPNames.WAIT_FOR_CONTINUE, HttpVersion.HTTP_1_1); // add thes settings HttpClient httpClient = new DefaultHttpClient(params); // set uploadlocation HttpPost httpPost = new HttpPost(aUrl); try { jsonParameters = new JSONObject(parameters); } catch (JSONException e2) { // TODO Auto-generated catch block e2.printStackTrace(); stopSelf(); } // set video FileBody fb = new FileBody(new File(file)); // get extra parameters from json and add them to entity try { MultipartEntity entity = new MultipartEntity( HttpMultipartMode.STRICT); Iterator&lt;String&gt; iter = jsonParameters.keys(); // loop as long as there are keys while (iter.hasNext()) { String key = iter.next(); try { value = jsonParameters.get(key); } catch (JSONException e) { // Something went wrong! stopSelf(); } // add them entity.addPart(key, new StringBody(value.toString())); } // continue to add data to entity entity.addPart("widget_uuid", new StringBody(uuid)); entity.addPart("widget_uploaded", new StringBody(uploaded)); entity.addPart("file", fb); httpPost.setEntity(entity); // get response from server HttpResponse response = httpClient.execute(httpPost); try { // get statuscode from server HttpEntity resEntity = response.getEntity(); String serverRespons = ""; if (serverRespons != null) { serverRespons = EntityUtils.toString(resEntity); } serverRespons = serverRespons.substring( serverRespons.indexOf("(") + 1, serverRespons.indexOf(")")); try { jsonServerRespons = new JSONObject(serverRespons); } catch (JSONException e) { } try { statusServerRespons = jsonServerRespons.getString("status"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.i("test", statusServerRespons); // delete successfully sended video's if (statusServerRespons.equalsIgnoreCase("ok")) { vds.deleteTitle(id); } } catch (ClientProtocolException e1) { // Something went wrong! stopSelf(); } catch (IOException e1) { // Something went wrong! stopSelf(); } return null; } catch (IOException e) { // Something went wrong! stopSelf(); } return null; } </code></pre> <p>thanks in advance </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload