>
Amigos,
Minha replicação está ocorrendo parcialmente, ou seja, se o texto do campo contém espaço, só grava a primeira palavra, ex.:
Rua das Flores > grava no banco MySQL > Rua
RuadasFlores > grava no banco Mysql > RuadasFlores
No banco SQLite está normal, o texto completo e meu mysql está configurado com VARCHAR(255).
Segue meu código:
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.IBinder;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Created by Marco on 23/01/2015.
* Servico para exportar os daados do Giro
*/
public class ExportarGiro extends Service implements Runnable{
public void onCreate (){
new Thread(ExportarGiro.this).start();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void run() {
SQLiteDatabase db = openOrCreateDatabase("giro.db", Context.MODE_PRIVATE, null);
Cursor cursor = db.rawQuery("SELECT * FROM giro", null);
int totalDB = cursor.getCount();
int totalReplicado = 0;
while(cursor.moveToNext()){
StringBuilder strURL = new StringBuilder();
strURL.append("http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=");
strURL.append(cursor.getString(cursor.getColumnIndex("logradouro")));
strURL.append("&numeroatual=");
strURL.append(cursor.getString(cursor.getColumnIndex("numeroatual")));
Log.d("ExportarGiro",strURL.toString());
try{
URL url = new URL(strURL.toString());
HttpURLConnection http = (HttpURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader line = new BufferedReader(ips);
String linhaRetorno = line.readLine();
if(linhaRetorno.equals("Y")){
db.delete("giro","id=?",new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado++;
Log.d("ExportarGiro","OK");
}else{
}
} catch(Exception ex){
Log.d("ExportarGiro",ex.getMessage());
}
}
db.close();
stopSelf();
if(totalDB == totalReplicado){
}
}
}
ola Marco...
qual tipo vc colocou logradouro??
varchar ou char ??
Olá André, no Mysql foi Varchar.
quando acesso diretamente pela URL no navegador vai normal. ex.:
http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=teste de rua&numeroatual=123
veja meu logcat:
01-23 17:12:11.472 14168-14168/com.g4s.br.giro W/ContextImpl%uFE55 Implicit intents with startService are not safe: Intent { act=INICIAR_REPLICACAO } android.content.ContextWrapper.startService:494 com.g4s.br.giro.CadastroActivity.onOptionsItemSelected:598 android.app.Activity.onMenuItemSelected:2600
01-23 17:12:11.602 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 http://meuservidor.com.br/webservice/giro-cadastro.php?logradouro=Rua das Flores&numeroatual=123
01-23 17:12:11.832 14168-14216/com.g4s.br.giro D/dalvikvm%uFE55 GC_FOR_ALLOC freed 848K, 19% free 3898K/4804K, paused 28ms, total 54ms
01-23 17:12:12.422 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 OK
01-23 17:12:12.422 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 http://URL.com.br/webservice/giro-cadastro.php?logradouro=Rua das Flores&numeroatual=123
01-23 17:12:12.532 14168-14216/com.g4s.br.giro D/ExportarGiro%uFE55 OK
RESOLVIDO
Depois de:
Try {
URL url = new URL(strURL.toString());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
try{
URL url = new URL(strURL.toString());
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
HttpURLConnection http = (HttpURLConnection) url.openConnection();
InputStreamReader ips = new InputStreamReader(http.getInputStream());
BufferedReader line = new BufferedReader(ips);
String linhaRetorno = line.readLine();
if(linhaRetorno.equals("Y")){
db.delete("giro","id=?",new String[]{String.valueOf(cursor.getInt(0))});
totalReplicado ;
Log.d("ExportarGiro","OK");
}else{
}
} catch(Exception ex){
Log.d("ExportarGiro",ex.getMessage());
}