Webサービスに大きな文字列をアップロードしています。文字列には改行文字が含まれ、 "\ n"と書かれています。 データはいくつかのことを次のようになります。改行文字のあいまいな動作
05/06/2012 11:35:43 AM- DB exists, transferring data\n05/06/2012
11:48:20 AM- loadUserSpinners, cursor.getCount()=2\n05/06/2012
11:48:20 AM- Battery: 50%\n05/06/2012 11:48:20 AM- ITEM SELECTED: 0
上記のデータは列JsonArrObj
に格納されます。データ/文字列をアップロードするには、次のコードを使用しています。
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 360000; //6 minutes
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 420000; //7 minutes
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
JSONArray jsonParams = new JSONArray();
Object[] params={IPAddress,Database,DbName,DbPassword,JsonArrObj};
for (int i = 0; i < params.length; i++) {
jsonParams.put(params[i]);
}
JSONObject jsonRequest = new JSONObject();
jsonRequest.put("id", Id);
jsonRequest.put("method", FunctionName);
jsonRequest.put("params", jsonParams);
JSONEntity entity = new JSONEntity(jsonRequest);
entity.setContentType("application/json; charset=utf-8");
HttpPost request = new HttpPost(URL);
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity httpEntity = response.getEntity();
InputStream content = httpEntity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content,"iso-8859-1"),8);
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
LogE("result line: "+line);
String str=convertString(line);
parseJson(str);
}
content.close();
}
文字列が正常にアップロードされました。私が直面している問題は、文字列がjsonParams
に変換されている間に、文字列データの"\n"
がサーバ側で"\\n"
に変換され、新しい行ではなく小さな箱が表示されます。
NOTEPADアプリケーションでこの文字列を開くと、小さなボックスが表示されます。しかし、WORDPADアプリケーションで開くと、テキストが新しい行に表示されます。私によれば、正しい「コンテンツタイプ」またはエンコーディングを入力した可能性があります。同じ解決策を提案してください。
... jsonParams- jsonArrObj
に送信されたデータを自身のアップロード中に
JsonArrObj= URLEncoder.encode(JsonArrObj, "utf-8");
はエラーを与えた最終的には次のようになります。
05\/06\/2012 04:05:52 PM- DB exists, transferring
data\\n05\/06\/2012 04:32:56 PM- loadUserSpinners,
cursor.getCount()\\u003d2\\n05\/06\/2012 04:32:56 PM- Battery:
50%\\n05\/06\/2012 04:32:56 PM- ITEM SELECTED: 0
「\ n」の前に余分な「\」を入れてみましたか?それは "\ n"の代わりに "\ n"ですか? –
@ V.P.Verma、 "\\ n"を置くと、Webビューでテキストを表示できなくなります。また、問題は "\ n"をそのまま保存することです。エンコーダは "\ n"を "望ましくない" \ nに変換しています.. – Pallavi
@ user370305はい.. – Pallavi