- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 PayPal 网站上,所有示例调用都是使用 curl 完成的。在 Linux 下使用 CURL 很容易重复,但我想使用 Java 进行这些调用。
例如,假设有电话:
curl -v https://api.sandbox.paypal.com/v1/payments/payment \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <Access-Token>' \
-d '{
"intent":"sale",
"redirect_urls":{
"return_url":"http://example.com/your_redirect_url.html",
"cancel_url":"http://example.com/your_cancel_url.html"
},
"payer":{
"payment_method":"paypal"
},
"transactions":[
{
"amount":{
"total":"7.47",
"currency":"USD"
}
}
]
}'
假设我有 <Access-Token>
的值必须设置,我如何将之前的字符串转换为 http 请求,以使用 Java 且不使用 CURL 从 PayPal 获得答案?
现在我对 URL 的 HttpURLConnection 做了如下操作:
private HttpURLConnection createPOSTHttpURLConnection(final URL url) throws IOException {
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("User-Agent", "Mozilla/4.0");
return connection;
}
在我的主要我做如下:
final HttpURLConnection connection = createPOSTHttpURLConnection(url);
connection.setRequestProperty("Authorization", "Bearer <Access-Token>");//replaced with a real value
connection.setRequestProperty("Content-Type", "application/json");
final String jsonData = "{ \"intent\":\"sale\", \"redirect_urls\":{ \"return_url\":\"http://example.com/your_redirect_url.html\", \"cancel_url\":\"http://example.com/your_cancel_url.html\" }, \"payer\":{ \"payment_method\":\"paypal\" }, \"transactions\":[ { \"amount\":{ \"total\":\"7.47\", \"currency\":\"USD\"}}]}";
connection.setFixedLengthStreamingMode(jsonData.length());
// get the output stream to POST to.
try(final DataOutputStream output = new DataOutputStream(connection.getOutputStream())) {
output.writeBytes(jsonData);
output.flush();
}
final InputStream isToBeRead = connection.getInputStream();
但是,我收到以下错误:
Cannot read from the given URL https://api.sandbox.paypal.com/v1/payments/payment with given params and data
当我尝试使用 InputStream
时发生了 Tha :
java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1636)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at com.sudengut.de.utils.url.HttpClient.readFromHttpURL(HttpClient.java:65)
实现 Kevin Hoffman '解决方案我得到以下结果:
Server returned HTTP response code: 400 for URL: https://api.sandbox.paypal.com/v1/payments/payment
Response code:400
Response message:Bad Request
实现 Garry的回答我得到以下日志:
21:30:06.070 [main] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: default
21:30:06.109 [main] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context
21:30:06.111 [main] DEBUG o.a.h.i.c.PoolingHttpClientConnectionManager - Connection request: [route: {s}->https://api.sandbox.paypal.com:443][total kept alive: 0; route allocated: 0 of 2; total allocated: 0 of 20]
21:30:06.143 [main] DEBUG o.a.h.i.c.PoolingHttpClientConnectionManager - Connection leased: [id: 0][route: {s}->https://api.sandbox.paypal.com:443][total kept alive: 0; route allocated: 1 of 2; total allocated: 1 of 20]
21:30:06.147 [main] DEBUG o.a.h.impl.execchain.MainClientExec - Opening connection {s}->https://api.sandbox.paypal.com:443
21:30:06.202 [main] DEBUG o.a.h.i.c.DefaultHttpClientConnectionOperator - Connecting to api.sandbox.paypal.com/173.0.82.78:443
21:30:06.202 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - Connecting socket to api.sandbox.paypal.com/173.0.82.78:443 with timeout 0
21:30:06.668 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - Enabled protocols: [TLSv1, TLSv1.1, TLSv1.2]
21:30:06.668 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - Enabled cipher suites:[TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
21:30:06.669 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - Starting handshake
21:30:07.291 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - Secure session established
21:30:07.291 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - negotiated protocol: TLSv1.2
21:30:07.292 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - negotiated cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
21:30:07.292 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - peer principal: CN=api.sandbox.paypal.com, OU=PayPal Production, O="PayPal, Inc.", L=San Jose, ST=California, C=US
21:30:07.292 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - peer alternative names: [api.sandbox.paypal.com]
21:30:07.293 [main] DEBUG o.a.h.c.s.SSLConnectionSocketFactory - issuer principal: CN=VeriSign Class 3 Secure Server CA - G3, OU=Terms of use at https://www.verisign.com/rpa (c)10, OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
21:30:07.306 [main] DEBUG o.a.h.i.c.DefaultHttpClientConnectionOperator - Connection established 192.168.178.22:45213<->173.0.82.78:443
21:30:07.306 [main] DEBUG o.a.h.impl.execchain.MainClientExec - Executing request POST /v1/payments/payment HTTP/1.1
21:30:07.306 [main] DEBUG o.a.h.impl.execchain.MainClientExec - Proxy auth state: UNCHALLENGED
21:30:07.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> POST /v1/payments/payment HTTP/1.1
21:30:07.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Content-Type: application/json
21:30:07.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Authorization: Bearer A015TlBaYzfyFSUt9rVin-Lnltn6JuQLA968RyGGC8h.Zds
21:30:07.310 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Content-Length: 254
21:30:07.311 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Host: api.sandbox.paypal.com
21:30:07.311 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Connection: Keep-Alive
21:30:07.311 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> User-Agent: Apache-HttpClient/4.5 (Java/1.8.0_25)
21:30:07.311 [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Accept-Encoding: gzip,deflate
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "POST /v1/payments/payment HTTP/1.1[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Type: application/json[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Authorization: Bearer A015TlBaYzfyFSUt9rVin-Lnltn6JuQLA968RyGGC8h.Zds[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Content-Length: 254[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host: api.sandbox.paypal.com[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection: Keep-Alive[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent: Apache-HttpClient/4.5 (Java/1.8.0_25)[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Accept-Encoding: gzip,deflate[\r][\n]"
21:30:07.311 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
21:30:07.312 [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "{ "intent":"sale","redirect_urls":{ "return_url":"http://example.com/your_redirect_url.html", "cancel_url ":"http://example.com/your_cancel_url.html" }, "payer":{"payment_method":"paypal"},"transactions":[{ "amount":{ "total":"7.47", "currency":"USD"}}]}"
21:30:07.663 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 400 Bad Request[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Wed, 29 Jul 2015 19:30:07 GMT[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Server: Apache[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=205[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Paypal-Debug-Id: 3780624b824ed[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "CORRELATION-ID: 3780624b824ed[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Language: *[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Connection: close[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Connection: close[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Length: 404[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D880%26app%3Dplatformapiserv%26TIME%3D3207182677; domain=.paypal.com; path=/; Secure; HttpOnly[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Vary: Authorization[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Content-Type: application/json[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
21:30:07.664 [main] DEBUG org.apache.http.wire - http-outgoing-0 << "{"name":"VALIDATION_ERROR","details":[{"field":"redirect_urls.cancel_url ","issue":"This field name is not defined for this resource type"},{"field":"redirect_urls.cancel_url","issue":"This field required when payment_method is 'paypal'"}],"message":"Invalid request - see details","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR","debug_id":"3780624b824ed"}"
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 400 Bad Request
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Date: Wed, 29 Jul 2015 19:30:07 GMT
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Server: Apache
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << PROXY_SERVER_INFO: host=slcsbplatformapiserv3001.slc.paypal.com;threadId=205
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Paypal-Debug-Id: 3780624b824ed
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << CORRELATION-ID: 3780624b824ed
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Language: *
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Connection: close
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Connection: close
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Length: 404
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.API.1%26silo_version%3D880%26app%3Dplatformapiserv%26TIME%3D3207182677; domain=.paypal.com; path=/; Secure; HttpOnly
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Vary: Authorization
21:30:07.669 [main] DEBUG org.apache.http.headers - http-outgoing-0 << Content-Type: application/json
21:30:07.681 [main] DEBUG o.a.h.c.p.ResponseProcessCookies - Cookie accepted [X-PP-SILOVER="name%3DSANDBOX3.API.1%26silo_version%3D880%26app%3Dplatformapiserv%26TIME%3D3207182677", version:0, domain:paypal.com, path:/, expiry:null]
21:30:07.684 [main] WARN o.a.h.c.p.ResponseProcessCookies - Invalid cookie header: "Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT". Invalid 'expires' attribute: Thu, 01 Jan 1970 00:00:01 GMT
如果我用更多信息来解决这个问题,我会看到给定的 cookie 已附加并且不会替换缺少到期日期的 cookie。只需运行:
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import org.apache.http.HttpResponse;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.protocol.HTTP;
public class GarrysSolution {
public static void main(final String[] args) {
String accessToken = "A-valid-token";
String jsonString =
"{ \"intent\":\"sale\",\"redirect_urls\":{ \"return_url\":\"http://example.com/your_redirect_url.html\", \"cancel_url \":\"http://example.com/your_cancel_url.html\" }, \"payer\":{\"payment_method\":\"paypal\"},\"transactions\":[{ \"amount\":{ \"total\":\"7.47\", \"currency\":\"USD\"}}]}";
BasicCookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
cookie.setDomain(".paypal.com");
cookie.setPath("/");
LocalDate expirationDate = LocalDate.now().plus(100L, ChronoUnit.DAYS);
Instant instant = Instant.from(expirationDate.atStartOfDay(ZoneId.of("GMT")));
cookie.setExpiryDate(Date.from(instant));
cookie.setCreationDate(Date.from(Instant.now()));
cookieStore.addCookie(cookie);
RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.NETSCAPE).build(); HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
HttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig)
.setDefaultCookieStore(cookieStore).build();
HttpPost httpPost = new HttpPost("https://api.sandbox.paypal.com/v1/payments/payment");
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Authorization", "Bearer " + accessToken);
StringEntity entity = new StringEntity(jsonString, HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
try {
HttpResponse httpResponse = httpClient.execute(httpPost, context);
System.out.println("\n\n" + context.getCookieStore().getCookies());
System.out.println("\n\n" + httpResponse.getStatusLine().getStatusCode() + "/"
+ httpResponse.getStatusLine().getReasonPhrase());
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
我们从上下文中看到以下 cookie:
[[version: 0][name: JSESSIONID][value: 1234][domain: .paypal.com][path: /][expiry: Fri Nov 06 01:00:00 CET 2015], [version: 0][name: X-PP-SILOVER][value: name%3DSANDBOX3.API.1%26silo_version%3D880%26app%3Dplatformapiserv%26TIME%3D2370156885][domain: .paypal.com][path: /][expiry: null]]
所以我想这个问题可以通过将到期日期设置为适当的 cookie 来解决
最佳答案
代码吞没了异常(在没有捕获的 try block 中),该异常被抛出以指示正在发生 HTTP 错误 401(未经授权)。这可能是由于访问 token 无效所致。然后代码尝试读取 HTTP 响应,但失败了(因为 401 错误导致没有响应)并抛出正在打印到屏幕上的异常。
是否有可能在您设置代码时访问 token 已过期?
我获得了以下代码(下方),可以使用有效的访问 token 成功地使用 PayPal。与您的代码有一些细微差别(没有单独的方法;使用 HttpsURLConnection 而不是 HttpUrlConnection;删除了一些不需要的 header ;等等),但是这些更改都没有使它单独工作——它们只是稍微收紧了它并确保了它出现问题时打印正确的错误消息。然后,一旦我提供了一个有效的访问 token ,它就成功运行了。我想你知道尖括号 < >
必须删除访问 token 周围的内容,否则您将永远不会获得 curl
工作方法。
此外,请记住这只是示例代码 - 生产代码应将关闭语句移动到 finally
中 block ,或者返回到您最初使用的尝试资源方法。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.DataOutputStream;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class TestHttpsPost {
public static void main(String[] args) throws Exception {
// Uncomment one of these next two lines:
URL url = new URL("https://api.sandbox.paypal.com/v1/payments/payment");
//URL url = new URL("https://httpbin.org/post"); // good for testing
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
// Change this to a valid token:
connection.setRequestProperty("Authorization", "Bearer <Access-Token>");
connection.setRequestProperty("Content-Type", "application/json");
String jsonData = "{ \"intent\":\"sale\", \"redirect_urls\":{ \"return_url\":\"http://example.com/your_redirect_url.html\", \"cancel_url \":\"http://example.com/your_cancel_url.html\" }, \"payer\":{ \"payment_method\":\"paypal\" }, \"transactions\":[ { \"amount\":{ \"total\":\"7.47\", \"currency\":\"USD\"}}]}";
try {
// Post the data:
DataOutputStream output = new DataOutputStream(connection.getOutputStream());
output.writeBytes(jsonData);
output.close();
// Read the response:
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("Response code:" + connection.getResponseCode());
System.out.println("Response message:" + connection.getResponseMessage());
}
}
关于java - 将 PayPal curl 请求转换为 Java 中的 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31627733/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!