gpt4 book ai didi

java - Android 中的 JSON 数据加密和解密

转载 作者:太空宇宙 更新时间:2023-11-04 15:16:41 27 4
gpt4 key购买 nike

我正在尝试通过发送请求进行加密和解密,并从我的 Android 应用程序中的服务器获取响应,并且我使用了 JSON Web 服务,但我收到了 RuntimeException。我不知道该怎么做。

这是我的 Activity 代码。

   public class MainActivity extends Activity implements OnClickListener {

Button btnPost;

static String key="Dyv6ACIDe2q+OEjztjfNDw==";
Person person;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnPost = (Button) findViewById(R.id.btnPost);
btnPost.setOnClickListener(this);

}


static String RequestId="3465768789";
static String strRequestCode="001";
static String stringChannelId="MobileApp";
static String strIpAddress = "192.168.1.123";
static String strStatusFlag="true";
static String strUserId="test@test.com";
static String strPassword="password1";
static String strVendorId="001";
static String strRequestId="09";
static String strRequest="CLIENT";


public static String POST(String url, Person person)
{
InputStream inputStream = null;
String result = "";
try {


HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

String json = "";

JSONObject jsonObject = new JSONObject();

jsonObject.accumulate("RequestId", strRequestId);
jsonObject.accumulate("RequestCode", strRequestCode);
jsonObject.accumulate("ChannelId", stringChannelId);
jsonObject.accumulate("IPAddress", strIpAddress);
jsonObject.accumulate("ForceChangeFlag",strStatusFlag);
jsonObject.accumulate("UserId", strUserId);
jsonObject.accumulate("Password",strPassword);
jsonObject.accumulate("Request",strRequest );
jsonObject.accumulate("VendorId", strVendorId);


json = jsonObject.toString();


String reqvalues=AES128Bit.encrypt(jsonObject.toString().toString(),key);

Log.e("Reqvalues"," = "+reqvalues);

StringEntity se = new StringEntity(reqvalues);


httpPost.setEntity(se);

httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");

HttpResponse httpResponse = httpclient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();


if(inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";

}

catch (Exception e)
{
Log.d("InputStream", e.getLocalizedMessage());
}
return result;
}


@Override
public void onClick(View view)
{
new HttpAsyncTask().execute("http://test.window2india.com/cms/json/w2iWS");
}

}



private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls)
{

person = new Person();
person.setRequestId(strRequestId);
person.setRequestCode(strRequestCode);
person.setChannelId(stringChannelId);
person.setIPAddress(strIpAddress);
person.setStatusFlag(strStatusFlag);
person.setUserId(strUserId);
person.setPassword(strPassword);
person.setRequest(strRequest);
person.setVendorId(strVendorId);

String strPerson=person.toString();


Log.e("strPerson ", " =" + strPerson);

return POST(urls[0],person);
}

// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
Toast.makeText(getBaseContext(), "Data Sent!", Toast.LENGTH_LONG).show();
}
}


private static String convertInputStreamToString(InputStream inputStream) throws IOException{
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
String line = "";
String result = "";
while((line = bufferedReader.readLine()) != null)
result += line;

inputStream.close();
return result;

}
}

这里是日志猫信息。

12-28 10:21:15.183: I/dalvikvm(417): Could not find method com.anm.cms.core.util.AES128Bit.encrypt, referenced from method com.json_to_server.MainActivity.POST
12-28 10:21:15.223: W/dalvikvm(417): VFY: unable to resolve static method 5048: Lcom/anm/cms/core/util/AES128Bit;.encrypt (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
12-28 10:21:15.223: D/dalvikvm(417): VFY: replacing opcode 0x71 at 0x0061
12-28 10:21:15.362: D/dalvikvm(417): VFY: dead code 0x0064-00a0 in Lcom/json_to_server/MainActivity;.POST (Ljava/lang/String;Lcom/json_to_server/Person;)Ljava/lang/String;
12-28 10:21:15.362: D/dalvikvm(417): VFY: dead code 0x00a2-00a4 in Lcom/json_to_server/MainActivity;.POST (Ljava/lang/String;Lcom/json_to_server/Person;)Ljava/lang/String;
12-28 10:21:33.963: E/strPerson(417): =com.json_to_server.Person@40527d08
12-28 10:21:33.993: W/dalvikvm(417): threadid=9: thread exiting with uncaught exception (group=0x40015560)
12-28 10:21:34.003: E/AndroidRuntime(417): FATAL EXCEPTION: AsyncTask #1
12-28 10:21:34.003: E/AndroidRuntime(417): java.lang.RuntimeException: An error occured while executing doInBackground()
12-28 10:21:34.003: E/AndroidRuntime(417): at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.lang.Thread.run(Thread.java:1019)
12-28 10:21:34.003: E/AndroidRuntime(417): Caused by: java.lang.NoClassDefFoundError: com.anm.cms.core.util.AES128Bit
12-28 10:21:34.003: E/AndroidRuntime(417): at com.json_to_server.MainActivity.POST(MainActivity.java:120)
12-28 10:21:34.003: E/AndroidRuntime(417): at com.json_to_server.MainActivity$HttpAsyncTask.doInBackground(MainActivity.java:202)
12-28 10:21:34.003: E/AndroidRuntime(417): at com.json_to_server.MainActivity$HttpAsyncTask.doInBackground(MainActivity.java:1)
12-28 10:21:34.003: E/AndroidRuntime(417): at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-28 10:21:34.003: E/AndroidRuntime(417): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
12-28 10:21:34.003: E/AndroidRuntime(417): ... 4 more

最佳答案

您的 logcat 指出您没有在类路径中保留所需的库(可能构建路径可以引用它,因此您不会收到编译错误)。

12-28 10:21:34.003: E/AndroidRuntime(417): Caused by: java.lang.NoClassDefFoundError: com.anm.cms.core.util.AES128Bit

请确保您也在类路径中引用了正确的库。

编辑:您也可以尝试通过以下过程确保 jar 在运行时可用;

  1. 转到Java 构建路径订购和导出选项卡
  2. 确保您的外部 jar 已被“检查”
  3. 将其移至列表顶部

enter image description here

关于java - Android 中的 JSON 数据加密和解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20811236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com