【问题标题】:Java applet use httpresponJava小程序使用httprespon
【发布时间】:2012-10-26 05:08:26
【问题描述】:
  • 这是我的代码。
  • 我用一种简单的方式来制作 POST httprespon。
  • 安装在小程序上。
  • 我在 Eclipse 中工作正常。
  • 但安装在 appletviewer 中导致被击落。
  • 网页也会被击落。
  • 数据量太大,无法处理?
  • 还是有其他原因?
  • 我需要帮助谢谢你

    public class we extends Applet
    {
    Button sd = new Button("11");
    Label title= new Label();
    Label prompt = new Label();
    TextField input = new TextField(8);
    Label result = new Label();
    
    public void init()
    {
        add(sd);
            }
    
    public void start() {
    
    }
    
    public void paint (Graphics g) {
    
    }
    
    public boolean action(Event e, Object o) {
        if (e.target == input) {
            match();
        } else if (e.target == sd) {
            abandon();
        }
        return true;
    }   
    private void match() {      
    }
    private void abandon() {
        String url="http://119.14.80.132/ACT_ID_355";
    
    HttpPost httppost=new HttpPost(url);
    
    List<NameValuePair> params=new ArrayList<NameValuePair>();
    
    params.add(new BasicNameValuePair("UNCLOSE1","1"));
    
    try {
        httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.ISO_8859_1));
    } catch (UnsupportedEncodingException e1) {
    
        e1.printStackTrace();
    }
    
    HttpResponse response = null;
    try {
        response = new DefaultHttpClient().execute(httppost);
    } catch (ClientProtocolException e1) {
    
        e1.printStackTrace();
    } catch (IOException e1) {
    
        e1.printStackTrace();
    }
    
    if(response.getStatusLine().getStatusCode()==200){
        try {
            String resultq=EntityUtils.toString(response.getEntity());
        } catch (ParseException e1) {
    
            e1.printStackTrace();
        } catch (IOException e1) {
    
            e1.printStackTrace();
        }
    }
    
    }
    

    }

小程序查看器

Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: acc
ess denied ("java.net.SocketPermission" "119.14.80.132:80" "connect,resolve")
        at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:366)
        at java.security.AccessController.checkPermission(AccessController.java:
560)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
        at java.net.Socket.connect(Socket.java:574)
        at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSoc
ketFactory.java:127)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnect
ion(DefaultClientConnectionOperator.java:180)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedCli
entConnectionImpl.java:294)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(Default
RequestDirector.java:640)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultReq
uestDirector.java:479)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:805)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpCl
ient.java:784)
        at we.abandon(we.java:130)
        at we.action(we.java:49)
        at java.awt.Component.handleEvent(Component.java:6751)
        at java.awt.Component.postEvent(Component.java:5160)
        at java.awt.Component.postEvent(Component.java:5170)
        at java.awt.Component.dispatchEventImpl(Component.java:4877)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:682)
        at java.awt.EventQueue$3.run(EventQueue.java:680)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:696)
        at java.awt.EventQueue$4.run(EventQueue.java:694)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
main.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:244)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:163)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

【问题讨论】:

    标签: java http post web applet


    【解决方案1】:

    小程序在“沙盒”中运行。它只允许打开与下载它的服务器的连接。您看到的错误是安全违规,因为您正在尝试连接到另一台服务器。

    【讨论】:

    • 那我该怎么做呢?添加到 JAR 签名自定义安全?那么有没有违反安全签名会直接导致被击落?
    • 您可以签署您的小程序,但您需要一个证书(昂贵)或用户需要接受不受信任的可执行代码(极不可能)。然而,更好的方法是连接到原始服务器。将您的小程序放在服务器上(例如 119.14.80.132 ),并且只连接到该服务器。如果您需要来自另一台服务器的数据,请在源服务器(提供小程序的地方)上实现一个代理,以从另一台服务器检索数据,这样小程序仍然只需要连接到源服务器。
    • 我已经成功挂载了一个签名。但问题并没有解决。 C:\Program Files\Java\jdk1.7.0_09\bin> jarsigner-keystore nook-storepass 654321 -keypass 654321 se.jar ok 警告:签名者证书将在六个月内过期。
    • “签名者证书将在六个月内到期。” 制作证书时,可以选择以天为单位指定“有效期”。如果未指定,则默认为短于 6 个月。更广泛地说:如果这是为了“专业部署”,您确实应该使用由 CA(认证机构)授权的证书。它们非常(IMO)昂贵,但比“自签名”类型的部署具有优势。
    【解决方案2】:

    已回答。 我觉得非常愚蠢。 我花了十几个小时都不想出来。 答案其实只是一行文字。

    public void init()
    {
    System.setSecurityManager(null);
    add(sd);
    add(sd2);
    }
    

    我还是不明白WHY?????????

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多