Если проблема возникает только при изменении типа подключения, это, скорее всего, связано с плохим подключением к серверу.
HTTP разработан так, что в случае ошибки подключения вы можете просто повторить тот же запрос, пока не получите результат.
Но чтобы это сработало, вам нужно убедиться в нескольких вещах. Во-первых. Все ответы должны иметь длину контента. Во-вторых, все методы должны быть «безопасными» (или идемпотентными).
Это означает, что если вы отправите запрос несколько раз, вы получите тот же результат. GET, PUT и DELETE в порядке. (PUT может сказать, что создан или обновлен, а DELETE может сказать, что ОК или уже сделано, но конечный результат тот же).
POST - это проблема. Решение состоит в том, чтобы уникальный идентификатор отправлялся с каждым POST и сохранялся вместе с его данными. Таким образом, вы можете сказать, есть ли дубликат запроса.
Другой проблемой может быть кэширование провайдером 3G. Убедитесь, что сервер и клиент правильно настраивают кэширование для ваших нужд.
Майк Браун