Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Android设备向服务器发送大量数据_Php_Android_Json_Httprequest - Fatal编程技术网

Php 从Android设备向服务器发送大量数据

Php 从Android设备向服务器发送大量数据,php,android,json,httprequest,Php,Android,Json,Httprequest,我需要从Android设备中的csv向服务器上的网页发送大量数据,以便在php上构建大量SQL查询 很多人谈到在android上使用JSON,其他人则谈到通过如下方式发送字符串数组: String dataPOST = URLEncoder.encode("table") + "=" + URLEncoder.encode(tableName) + "&" + URLEncoder.encode("data") + "=" + URLEncoder

我需要从Android设备中的csv向服务器上的网页发送大量数据,以便在php上构建大量SQL查询

很多人谈到在android上使用JSON,其他人则谈到通过如下方式发送字符串数组:

String dataPOST = URLEncoder.encode("table") + "=" + URLEncoder.encode(tableName) + "&"     + URLEncoder.encode("data") + "="
                + URLEncoder.encode(sb.toString())+ "&" + URLEncoder.encode("idvente") + "="
                        + URLEncoder.encode(idvente);

        URL url = new URL(link);
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());

        wr.write(dataPOST);
        wr.flush();
但我担心php/my服务器的局限性,因为它可能包含大量数据。 解决我的问题最好的办法是什么


谢谢你,对不起,我的英语不太流利

您可以使用
多端口
发出POST请求。您可以将任何字符串和文件放入请求正文:

HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpClient httpClient = new DefaultHttpClient(params);

try {
    HttpPost httpPost = new HttpPost(YOUR_URL);

    MultipartEntity multipartEntity = new MultipartEntity();
    multipartEntity.addPart("param1", new StringBody("param1 value", Charset.forName("UTF-8")));
    multipartEntity.addPart("param2", new StringBody("param2 value", Charset.forName("UTF-8")));

    if (imagePath.length() > 0) {
        multipartEntity.addPart("images", new FileBody(new File(imagePath)));
    }

    httpPost.setEntity(multipartEntity);

    String resp = httpClient.execute(httpPost, new BasicResponseHandler());
} catch (Exception e) {
}
您也可以尝试
UrlEncodedFormEntity
。它也没有字符串长度的限制

HttpPost httpPost = new HttpPost(sb.toString());

List<NameValuePair> entityParams = new ArrayList<NameValuePair>();
entityParams.add(new BasicNameValuePair("action", "postcomment"));
entityParams.add(new BasicNameValuePair("app_id", com.appbuilder.sdk.android.Statics.appId));
entityParams.add(new BasicNameValuePair("token", com.appbuilder.sdk.android.Statics.appToken));
entityParams.add(new BasicNameValuePair("module_id", Statics.MODULE_ID));
entityParams.add(new BasicNameValuePair("parent_id", pVideoItem.getId() + ""));

httpPost.setEntity(new UrlEncodedFormEntity(entityParams, "utf-8"));

String resp = httpClient.execute(httpPost, new BasicResponseHandler());
HttpPost HttpPost=新建HttpPost(sb.toString());
List entityParams=new ArrayList();
添加(新的BasicNameValuePair(“action”、“postcomment”);
添加(新的BasicNameValuePair(“app_id”,com.appbuilder.sdk.android.Statics.appId));
添加(新的BasicNameValuePair(“token”,com.appbuilder.sdk.android.Statics.appToken));
添加(新的BasicNameValuePair(“module_id”,Statics.module_id));
添加(新的BasicNameValuePair(“parent_id”,pvideItem.getId()+);
setEntity(新的UrlEncodedFormEntity(entityParams,“utf-8”);
String resp=httpClient.execute(httpPost,new BasicResponseHandler());

如果您担心服务器会导致问题,那么您可以将数据分块发送?不,对我来说,将所有数据分块发送很重要,因为我必须处理php上的所有数据,我必须检索数据库上发送的lastId,用这个id我必须更新我的其他数据中的许多行。但是我可以在不删除php上以前的数据的情况下发送多个数据块吗?我要试试这个,你能解释一下为什么使用这个:
if(imagePath.length()>0){multipartEntity.addPart(“images”,new FileBody(new File(imagePath));}
它没有sting长度的限制。它提供了一种发送文件的方法。如果(imagePath.length()>0){multipartEntity.addPart(“images”,new FileBody(new File(imagePath));}-附加文件很简单好,我正在处理第二个文件,因为我必须下载并导入第一个文件的MIME4,我会很快写下我的反馈。所以我认为它对我来说很好,但我有很多更难的事情要做,但我觉得没关系。谢谢