Два проекта на одном сервере с разными портами, но клиент (Angular 6) не может вызвать сервер (Spring Boot) - PullRequest
0 голосов
/ 27 сентября 2018

Обновление

Я поместил два проекта на один сервер, которые являются клиентскими и серверными приложениями RestAPI.Я установил 4200 в качестве порта для клиента (который написан на Angular 6) и порт 8990 для серверной стороны WebSrv.Я запускаю Spring с командой java -jar artifact.jar, она отлично работает и отвечает на любые запросы.Но для клиентской стороны, когда я запускаю его со своей локальной машины с IP: localhost: 4200 (либо со встроенным компоновщиком IntellijIdea, либо с Angular CLI), он работает нормально и может отправлять запрос и получать ответ.Но когда я запускаю его с этого сервера (в том же месте, где расположен сервер WebSrv) и запускаю, он правильно показывает первую html-страницу, но когда я нажимаю кнопку для отправки запроса, ничего не происходит (ни исключение, ни какой-либо журнал), а сервер - нетполучаю любой запрос !!

Я искал свою проблему, но ничего не помогло. Буду признателен, если кто-нибудь поможет мне найти решение.Мне было интересно, если кто-нибудь знает, в чем проблема.

Вот мой код на стороне клиента (угловой)

import {Component, NgModule, OnInit} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {RouterModule, Router} from '@angular/router';

// const URL = 'http://localhost:8990/getUserId';
const URL = 'http://getuserid.mycompany.com:8990/getUserId';


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {

  constructor(
    private http: HttpClient
  ) {
  }

  fileToUpload: File = null;
  id: String = '0';

  inputId(event) {
    this.id = event.target.value;
    console.log('id is -- > ' + event.target.value);
  }

  inputFile(event) {
    this.fileToUpload = event.target.files[0];
    console.log('File path -- > ' + event.target.files[0].name);
  }

  onSubmit(id: string, file: File) {
    const frmData = new FormData();
    console.log('POST');
    // @ts-ignore
    frmData.append('id', this.id);
    frmData.append('inputPackage', this.fileToUpload);
    console.log('id --> ' + this.id);
    console.log('File name --> ' + this.fileToUpload.name); 
    this.http.post(URL, frmData).subscribe(res => {
      const resp = JSON.parse(JSON.stringify(res));
      if (resp['user'] != null) {
          if (resp['user']['user-id'] === false) { 
            alert('Successful!! Your User ID is : ' + resp['user']['user-id']); 
          } else {
            alert('Sorry!! Error occurred : ' + resp['error-message']);
          }
     } else {
        alert('Sorry!! Error occurred : ' + resp['error-message'] );
      }
    });

  }
}

, а это мой код на стороне сервера (Spring Boot):

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;



@Controller
public class GetUserIdController {
    private final static String DESTINATION_PATH = "/srv/resources/";
//    private final static String DESTINATION_PATH = "/mnt/d/DestPath/";
//    private final static String DESTINATION_PATH = "C:/Resources/Temp/";

    @CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
    @RequestMapping(method = RequestMethod.POST, value = "/getUserId",  headers = {"content-type=multipart/mixed","content-type=multipart/form-data"})
    @ResponseBody
    String Response(@RequestParam("inputPackage") MultipartFile[] inputPackages, @RequestParam("id") String id) {

        String response = null;
        String id ; 
        try {

            if (inputPackages != null && id != null && inputPackages.length > 0 && id.length() > 1) {

                ReceivedPackage recvPackage = new ReceivedPackage();
                recvPackage.setPId(id);
                if (inputPackages[0].getOriginalFilename() != null ) {
                    if( inputPackages[0].getOriginalFilename().contains(".zip")) {
                         FileUtils.saveFile(inputPackages[0].getInputStream(),inputPackages[0].getOriginalFilename(), DESTINATION_PATH);
                        recvPackage.setPackageName(inputPackages[0].getOriginalFilename());
                        recvPackage.setPackagePath(DESTINATION_PATH);  
                        recvPackage.setInputPackage(new File ( recvPackage.getPackagePath()));

                        response = GetUserId.runProcess(recvPackage, DESTINATION_PATH, id); 

                    }else{

                        response = "<error-message>The input file : "+ (inputPackages[0].getOriginalFilename())+" is invalid!!\n It should be a zip file!</error-message>";
                    }
                }
            }else{

                response = "<error-message>The ID and valid zip file should be provide!</error-message>" ;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return FileUtils.getJSONFormat(response);
    }
}

Заранее спасибо.

1 Ответ

0 голосов
/ 30 сентября 2018

Проблема в номере порта 4200, который был отфильтрован сетевым отделом компании.После изменения порта на 8080 он работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...