Если вы используете Angular v6 или выше, вы можете зарегистрировать сервис с корневым инжектором Angular, используя этот синтаксис:
import { EventEmitter } from '@angular/core';
@Injectable({providedIn: 'root'})
export class Headerrecipe{
stringselected = new EventEmitter<string>()
}
Тогда услуга не должна быть включена в массиве providers
любого модуля или компонента.
Регистрация службы таким способом регистрирует ее с корневым угловым инжектором, который предоставляет общий экземпляр. Таким образом, вы можете использовать эту технику для обмена данными между любыми компонентами приложения.
Вот отчет об ошибках (близко, не зафиксирует, не ошибка).
Их совет там состоит в том, чтобы кодировать как это:
HttpURLConnection httpConn = (HttpURLConnection)_urlConnection;
InputStream _is;
if (httpConn.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) {
_is = httpConn.getInputStream();
} else {
/* error from server */
_is = httpConn.getErrorStream();
}
Я знаю, что это не отвечает на вопрос непосредственно, но вместо того, чтобы пользоваться библиотекой HTTP-соединения, обеспеченной Sun, Вы могли бы хотеть смотреть на палата общин HttpClient , который (по-моему), имеет намного более легкий API для работы с.
Сначала проверьте код ответа и затем используйте HttpURLConnection.getErrorStream()
Мой рабочий код.
HttpURLConnection httpConn = (HttpURLConnection) urlConn;
if (httpConn.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) {
in = new InputStreamReader(urlConn.getInputStream());
BufferedReader bufferedReader = new BufferedReader(in);
if (bufferedReader != null) {
int cp;
while ((cp = bufferedReader.read()) != -1) {
sb.append((char) cp);
}
bufferedReader.close();
}
in.close();
} else {
/* error from server */
in = new InputStreamReader(httpConn.getErrorStream());
BufferedReader bufferedReader = new BufferedReader(in);
if (bufferedReader != null) {
int cp;
while ((cp = bufferedReader.read()) != -1) {
sb.append((char) cp);
}
bufferedReader.close();
}
in.close();
}
System.out.println("sb="+sb);
InputStream is = null;
if (httpConn.getResponseCode() !=200) {
is = httpConn.getErrorStream();
} else {
/* error from server */
is = httpConn.getInputStream();
}